package Ġio . sa eid . sweep . gson . wrapper Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . Type Adapter Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . google . gson . stream . Json Writer Ċ import Ġio . sa eid . sweep . gson . Sweep Type Adapter Ċ import Ġio . sa eid . sweep . gson . hook . Hooks Deleg ation Ċ Ċ internal Ġclass ĠWrapper Type Adapter < T >( ĊĠĠĠ Ġgson : ĠGson , ĊĠĠĠ Ġdelegate : ĠType Adapter < T >, ĊĠĠĠ Ġelement Adapter : ĠType Adapter < Json Element >, ĊĠĠĠ Ġtype : ĠType Token < T >, ĊĠĠĠ Ġprivate Ġval Ġwrapper Names Builder : ĠWrapper Names Builder , ĊĠĠĠ Ġprivate Ġval Ġhooks Deleg ation : ĠHooks Deleg ation Ċ ) Ġ: ĠS weep Type Adapter < T >( gson , Ġdelegate , Ġelement Adapter , Ġtype ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( out : ĠJson Writer , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Names Ġ= Ġwrapper Names Builder . build ( value ) ĊĊĠĠĠĠĠĠĠ Ġout . begin Object () ĊĊĠĠĠĠĠĠĠ Ġhooks Deleg ation . pre Serialize ( out , Ġgson , Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġstart Wr apping ( out , Ġwrapper Names ) ĊĠĠĠĠĠĠĠ Ġdelegate . write ( out , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġend Wr apping ( out , Ġwrapper Names ) ĊĊĠĠĠĠĠĠĠ Ġout . end Object () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Wr apping ( out : ĠJson Writer , Ġnames : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Item Ġ= Ġnames . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġnames . forEach Indexed Ġ{ Ġindex , Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . name ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġlast Item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . begin Object () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġend Wr apping ( out : ĠJson Writer , Ġnames : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Item Ġ= Ġnames . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġrepeat ( last Item ) Ġ{ Ġout . end Object () Ġ} ĊĠĠĠ Ġ} Ċ }