package Ġcom . s ud hir kh anger . gen ius . data . network Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . Type Adapter Ċ import Ġcom . google . gson . Type Adapter Factory Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . google . gson . stream . Json Reader Ċ import Ġcom . google . gson . stream . Json Writer Ċ import Ġjava . io . IOException Ċ Ċ internal Ġclass ĠItem Type Adapter Factory Ġ: ĠType Adapter Factory Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġcreate ( gson : ĠGson , Ġtype : ĠType Token < T >): ĠType Adapter < T > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdelegate Ġ= Ġgson . get Delegate Adapter ( this , Ġtype ) ĊĠĠĠĠĠĠĠ Ġval Ġelement Adapter Ġ= Ġgson . get Adapter ( Json Element :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠType Adapter < T >() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( out : ĠJson Writer , Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . write ( out , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread (` in `: ĠJson Reader ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġjson Element Ġ= Ġelement Adapter . read (` in `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Element . is JsonObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson Element . as JsonObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( jsonObject . has (" results ") Ġ&& ĠjsonObject . get (" results "). is JsonArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Element Ġ= ĠjsonObject . getAs JsonArray (" results ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelegate . fromJson Tree ( json Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. null Safe () ĊĠĠĠ Ġ} Ċ } Ċ