package Ġcom . merc ate o . json schema . mapper Ċ Ċ import Ġcom . merc ate o . json schema . property . Property Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠObject Context < T >( ĊĠĠĠ Ġval Ġproperty : ĠProperty < *, ĠT >, ĊĠĠĠ Ġval ĠdefaultValue : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġallowed Values : ĠSet < T > Ġ= Ġempty Set () Ċ ) Ġ{ ĊĠĠĠ Ġval Ġproperty Descriptor Ġget () Ġ= Ġproperty . property Descriptor ĊĊĠĠĠ Ġval Ġreference Ġget () Ġ= Ġproperty . reference ĊĊĠĠĠ Ġfun Ġ< U > Ġcreate Inner ( child : ĠProperty < T , ĠU >, Ġvalue Accessor : Ġ( T ) Ġ-> ĠU ?): ĠObject Context < U > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġallowed Values Ġ= Ġallowed Values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( value Accessor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter ( Objects :: non Null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () Ġas ĠSet < U > ĊĊĠĠĠĠĠĠĠ Ġval ĠdefaultValue Ġ= ĠdefaultValue ?. let ( value Accessor ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠObject Context ( child , ĠdefaultValue , Ġallowed Values ) ĊĠĠĠ Ġ} Ċ } Ċ