package Ġm ary k . core . query . changes Ċ Ċ import Ġm ary k . core . exceptions . RequestException Ċ import Ġm ary k . core . models . Reference Mapped DataModel Ċ import Ġm ary k . core . properties . ObjectProperty Definitions Ċ import Ġm ary k . core . properties . Property Definitions Ċ import Ġm ary k . core . properties . definitions . Embedded Object Definition Ċ import Ġm ary k . core . properties . definitions . list Ċ import Ġm ary k . core . properties . graph . Root Prop Ref Graph Ċ import Ġm ary k . core . properties . references . Any Property Reference Ċ import Ġm ary k . core . properties . references . Is Property Reference For Values Ċ import Ġm ary k . core . query . RequestContext Ċ import Ġm ary k . core . values . Object Values Ċ import Ġm ary k . json . Is Json Like Writer Ċ Ċ /** ĠDefines Ġchanges Ġto Ġlists Ġby Ġ[ list Value Changes ] Ġ*/ Ċ data Ġclass ĠList Change Ġinternal Ġconstructor ( ĊĠĠĠ Ġval Ġlist Value Changes : ĠList < List Value Changes <* >> Ċ ) Ġ: ĠIs Change Ġ{ ĊĠĠĠ Ġoverride Ġval Ġchange Type Ġ= ĠChange Type . List Change ĊĊĠĠĠ Ġconstructor ( var arg Ġlist Value Change : ĠList Value Changes <* >) Ġ: Ġthis ( list Value Change . toList ()) ĊĊĠĠĠ Ġoverride Ġfun Ġfilter With Select ( select : ĠRoot Prop Ref Graph < out ĠProperty Definitions >): ĠList Change ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġlist Value Changes . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect . contains ( it . reference ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( filtered . isEmpty ()) Ġnull Ġelse ĠList Change ( filtered ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchange Values ( object Ch anger : Ġ( Is Property Reference For Values < *, Ġ*, Ġ*, Ġ* >, Ġ( Any ?, ĠAny ?) Ġ-> ĠAny ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmutable Reference List Ġ= Ġmutable ListOf < Any Property Reference >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( list Value Changes Ġin Ġlist Value Changes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Value Changes . reference . unwrap ( mutable Reference List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreference Index Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġvalue Ch anger ( original Value : ĠAny ?, ĠnewValue : ĠAny ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ref Ġ= Ġmutable Reference List . get OrNull ( reference Index ++) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( current Ref Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( newValue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMutable List < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Value Changes . delete Values ?. let Ġ{ ĠnewValue . removeAll ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Value Changes . add Values AtIndex ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġvalue ) Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( newValue Ġas ĠMutable List < Any >). add ( index . toInt (), Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Value Changes . add Values ToEnd ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( newValue Ġas ĠMutable List < Any >). addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġthrow ĠRequest Exception (" Cannot Ġset Ġlist Ġchanges Ġon Ġnon Ġexisting Ġvalue ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRequest Exception (" Unsupported Ġvalue Ġtype : Ġ$ newValue Ġfor Ġref : Ġ$ current Ref ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeep Value Ch anger ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewValue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: value Ch anger ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ// ĠD eeper Ġchange Ġso Ġno Ġoverwrite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġref Ġ= Ġmutable Reference List [ reference Index ++ ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIs Property Reference For Values < *, Ġ*, Ġ*, Ġ*> Ġ-> Ġobject Ch anger ( ref , Ġ:: value Ch anger ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRequest Exception (" Unsupported Ġreference Ġtype : Ġ$ ref ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġobject ĠProperties Ġ: ĠObject Property Definitions < List Change >() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreference List Value Changes Pairs Ġby Ġlist ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġ 1 u , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgetter Ġ= ĠList Change :: list Value Changes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Definition Ġ= ĠEmbedded Object Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Model Ġ= Ġ{ ĠList Value Changes Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĊĠĠĠĠĠĠĠ ĠReference Mapped DataModel < List Change , ĠList Value Changes <* >, ĠProperties , ĠList Value Changes . Properties >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties Ġ= ĠProperties , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontained DataModel Ġ= ĠList Value Changes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreference Property Ġ= ĠList Value Changes . Properties . reference ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( values : ĠObject Values < List Change , ĠProperties >) Ġ= ĠList Change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Value Changes Ġ= Ġvalues ( 1 u ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite Json ( obj : ĠList Change , Ġwriter : ĠIs Json Like Writer , Ġcontext : ĠRequest Context ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Reference Value Map ( writer , Ġobj . list Value Changes , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ