package Ġcom . ap ol log raph ql . apollo . cache . normalized . internal Ċ Ċ import Ġcom . ap ol log raph ql . apollo . api . BigDecimal Ċ import Ġcom . ap ol log raph ql . apollo . cache . normalized . Cache Reference Ċ import Ġcom . ap ol log raph ql . apollo . cache . normalized . Record Ċ import Ġok io . internal . common As Utf 8 To ByteArray Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ object ĠRecord We igh er Ġ{ ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ BOOLEAN Ġ= Ġ 1 6 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ BIG _ DECIMAL Ġ= Ġ 3 2 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ ARRAY _ OVER HEAD Ġ= Ġ 1 6 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ MAP _ OVER HEAD Ġ= Ġ 1 6 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ RECORD _ OVER HEAD Ġ= Ġ 1 6 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ CACHE _ REFERENCE _ OVER HEAD Ġ= Ġ 1 6 ĊĠ Ġprivate Ġconst Ġval ĠSIZE _ OF _ NULL Ġ= Ġ 4 ĊĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġbyte Change ( newValue : ĠAny ?, ĠoldValue : ĠAny ?): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwe igh Field ( newValue ) Ġ- Ġwe igh Field ( oldValue ) ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġcalculate Bytes ( record : ĠRecord ): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġsize Ġ= ĠSIZE _ OF _ RECORD _ OVER HEAD Ġ+ Ġrecord . key . common As Utf 8 To ByteArray (). size ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġrecord . fields ) Ġ{ ĊĠĠĠĠĠ Ġsize Ġ+= Ġkey . common As Utf 8 To ByteArray (). size Ġ+ Ġwe igh Field ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsize ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġwe igh Field ( field : ĠAny ?): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( field ) Ġ{ ĊĠĠĠĠĠ Ġnull Ġ-> ĠSIZE _ OF _ NULL ĊĠĠĠĠĠ Ġis ĠString Ġ-> Ġfield . common As Utf 8 To ByteArray (). size ĊĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠSIZE _ OF _ BOOLEAN ĊĠĠĠĠĠ Ġis ĠBigDecimal Ġ-> ĠSIZE _ OF _ BIG _ DECIMAL ĊĠĠĠĠĠ Ġis ĠList < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠSIZE _ OF _ ARRAY _ OVER HEAD Ġ+ Ġfield . sum By Ġ{ Ġwe igh Field ( it ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠCache Reference Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠSIZE _ OF _ CACHE _ REFERENCE _ OVER HEAD Ġ+ Ġfield . key . common As Utf 8 To ByteArray (). size ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠ Ġ* ĠCustom Ġscal ars Ġwith Ġa Ġjson Ġobject Ġrepresentation Ġare Ġstored Ġdirectly Ġin Ġthe Ġrecord ĊĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠ Ġis ĠMap < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ ĠSIZE _ OF _ MAP _ OVER HEAD Ġ+ Ġfield . keys . sum By Ġ{ Ġwe igh Field ( it ) Ġ} Ġ+ Ġfield . values . sum By Ġ{ Ġwe igh Field ( it ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown Ġfield Ġtype Ġin ĠRecord . Ġ${ field :: class . qualified Name }") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ