package Ġcom . github . sal om on br ys . kot son Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . Json Null Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . Json Serialization Context Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util .* Ċ Ċ private Ġfun Ġ< T Ġ: ĠAny > ĠJson Element ? ._ null Or ( get NotNull : ĠJson Element . () Ġ-> ĠT ): ĠT ? ĊĠĠĠĠĠĠĠ Ġ= Ġif Ġ( this Ġ== Ġnull Ġ|| Ġis Json Null ) Ġnull Ġelse Ġget NotNull () Ċ Ċ val ĠJson Element . string : ĠString Ġget () Ġ= Ġas String Ċ val ĠJson Element ?. null String : ĠString ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġstring Ġ} Ċ Ċ val ĠJson Element . bool : ĠBoolean Ġget () Ġ= Ġas Boolean Ċ val ĠJson Element ?. null Bool : ĠBoolean ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġbool Ġ} Ċ Ċ val ĠJson Element . byte : ĠByte Ġget () Ġ= Ġas Byte Ċ val ĠJson Element ?. null Byte : ĠByte ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġbyte Ġ} Ċ Ċ val ĠJson Element . char : ĠChar Ġget () Ġ= Ġas Character Ċ val ĠJson Element ?. null Char : ĠChar ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġchar Ġ} Ċ Ċ val ĠJson Element . short : ĠShort Ġget () Ġ= Ġas Short Ċ val ĠJson Element ?. null Short : ĠShort ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġshort Ġ} Ċ Ċ val ĠJson Element . int : ĠInt Ġget () Ġ= Ġas Int Ċ val ĠJson Element ?. null Int : ĠInt ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġint Ġ} Ċ Ċ val ĠJson Element . long : ĠLong Ġget () Ġ= Ġas Long Ċ val ĠJson Element ?. null Long : ĠLong ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġlong Ġ} Ċ Ċ val ĠJson Element . float : ĠFloat Ġget () Ġ= Ġas Float Ċ val ĠJson Element ?. null Float : ĠFloat ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġfloat Ġ} Ċ Ċ val ĠJson Element . double : ĠDouble Ġget () Ġ= Ġas Double Ċ val ĠJson Element ?. null Double : ĠDouble ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġdouble Ġ} Ċ Ċ val ĠJson Element . number : ĠNumber Ġget () Ġ= Ġas Number Ċ val ĠJson Element ?. null Number : ĠNumber ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġnumber Ġ} Ċ Ċ val ĠJson Element . big Integer : ĠBigInteger Ġget () Ġ= Ġas BigInteger Ċ val ĠJson Element ?. null BigInteger : ĠBigInteger ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġbig Integer Ġ} Ċ Ċ val ĠJson Element . big Decimal : ĠBigDecimal Ġget () Ġ= Ġas BigDecimal Ċ val ĠJson Element ?. null BigDecimal : ĠBigDecimal ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġbig Decimal Ġ} Ċ Ċ val ĠJson Element . array : ĠJson Array Ġget () Ġ= Ġas JsonArray Ċ val ĠJson Element ?. null Array : ĠJson Array ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġarray Ġ} Ċ Ċ val ĠJson Element . obj : ĠJsonObject Ġget () Ġ= Ġas JsonObject Ċ val ĠJson Element ?. null Obj : ĠJsonObject ? Ġget () Ġ= Ġ_ null Or Ġ{ Ġobj Ġ} Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠJson Element . cast To (): ĠT Ġ= ĠGson (). fromJson ( this , Ġtype Token < T >()) Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠJson Element . getObject ( key : ĠString ): ĠT Ġ= ĠGson (). fromJson ( get ( key ), Ġtype Token < T >()) Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠJson Element . getObject ( index : ĠInt ): ĠT Ġ= ĠGson (). fromJson ( get ( index ), Ġtype Token < T >()) Ċ Ċ val Ġjson Null : ĠJson Null Ġ= ĠJson Null . INSTANCE Ċ Ċ operator Ġfun ĠJson Element . get ( key : ĠString ): ĠJson Element Ġ= Ġobj . get NotNull ( key ) Ċ operator Ġfun ĠJson Element . get ( index : ĠInt ): ĠJson Element Ġ= Ġarray . get ( index ) Ċ Ċ fun ĠJsonObject . get NotNull ( key : ĠString ): ĠJson Element Ġ= Ġget ( key ) Ġ?: Ġthrow ĠNoSuch ElementException ("' $ key ' Ġis Ġnot Ġfound ") Ċ Ċ operator Ġfun ĠJsonObject . contains ( key : ĠString ): ĠBoolean Ġ= Ġhas ( key ) Ċ fun ĠJsonObject . isEmpty (): ĠBoolean Ġ= Ġentry Set (). isEmpty () Ċ fun ĠJsonObject . isNotEmpty (): ĠBoolean Ġ= Ġentry Set (). isNotEmpty () Ċ fun ĠJsonObject . keys (): ĠCollection < String > Ġ= Ġentry Set (). map Ġ{ Ġit . key Ġ} Ċ fun ĠJsonObject . forEach ( operation : Ġ( String , ĠJson Element ) Ġ-> ĠUnit ) Ġ= Ġentry Set (). forEach Ġ{ Ġoperation ( it . key , Ġit . value ) Ġ} Ċ fun ĠJsonObject . toMap (): ĠMap < String , ĠJson Element > Ġ= Ġentry Set (). associate By ({ Ġit . key Ġ}, Ġ{ Ġit . value Ġ}) Ċ Ċ fun ĠJsonObject . addProperty ( property : ĠString , Ġvalue : ĠJson Element ?) Ġ= Ġadd ( property , Ġvalue ) Ċ fun ĠJsonObject . addProperty ( property : ĠString , Ġvalue : ĠAny ?, Ġcontext : ĠJson Serialization Context ) Ġ= Ġadd ( property , Ġcontext . serialize ( value )) Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠString ?) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue ) Ġ} Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠChar ?) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue ) Ġ} Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠBoolean ?) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue ) Ġ} Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠNumber ?) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue ) Ġ} Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠJson Element ?) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue ) Ġ} Ċ fun ĠJsonObject . addProperty If NotNull ( property : ĠString , Ġvalue : ĠAny ?, Ġcontext : ĠJson Serialization Context ) Ġ= Ġvalue ?. let Ġ{ Ġadd Property ( property , Ġvalue , Ġcontext ) Ġ} Ċ Ċ fun ĠJsonObject . getAs JsonArray OrNull ( key : ĠString ) Ġ= Ġget ( key ) Ġas ? ĠJson Array Ċ Ċ operator Ġfun ĠJson Array . contains ( value : ĠAny ): ĠBoolean Ġ= Ġcontains ( value . toJson Element ()) Ċ Ċ fun ĠJson Array . getAs JsonObject ( index : ĠInt ) Ġ= Ġget ( index ) Ġas ĠJsonObject Ċ