/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* ĠĊ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠSyntax Error 4 0 4 Ċ Ġ* ĠĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* ĠĊ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* ĠĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġat . syntax error . json 5 Ċ Ċ import Ġat . syntax error . json 5 . JSONException . JSON SyntaxError Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . time . Instant Ċ import Ġjava . util . function . Function Ċ import Ġjava . util . function . Predicate Ċ Ċ /** Ċ Ġ* ĠA ĠJSONArray Ġis Ġan Ġarray Ġstructure Ġcapable Ġof Ġholding Ġmultiple Ġvalues , Ċ Ġ* Ġincluding Ġother ĠJSON Arrays Ġand Ġ[ JSON Objects ][ JSONObject ] Ċ Ġ* Ċ Ġ* Ġ@ author ĠSyntax Error 4 0 4 Ċ Ġ*/ Ċ class ĠJSONArray () Ġ: ĠIterable < Any ?> Ġ{ ĊĠ Ġprivate Ġval Ġvalues : ĠMutable List < Any ?> Ġ= ĠArrayList () ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConstructs Ġa Ġnew ĠJSONArray Ġfrom Ġa Ġstring ĊĠĠ Ġ*/ ĊĠ Ġconstructor ( source : ĠString ) Ġ: Ġthis ( JSONParser ( source )) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConstructs Ġa Ġnew ĠJSONArray Ġfrom Ġa ĠJSON Parser ĊĠĠ Ġ*/ ĊĠ Ġconstructor ( parser : ĠJSON Parser ) Ġ: Ġthis () Ġ{ ĊĠĠĠ Ġvar Ġc : ĠChar ĊĠĠĠ Ġif Ġ( parser . next Clean () Ġ!= Ġ'[ ') Ġthrow ĠJSON SyntaxError (" A ĠJSONArray Ġmust Ġbegin Ġwith Ġ'[' ") ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠ Ġc Ġ= Ġparser . next Clean () ĊĠĠĠĠĠ Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChar . MIN _ VALUE Ġ-> Ġthrow ĠJSON SyntaxError (" A ĠJSONArray Ġmust Ġend Ġwith Ġ' ]' ") ĊĠĠĠĠĠĠĠ Ġ' ]' ĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġreturn ĊĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġparser . back () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġvalue Ġ= Ġparser . next Value () ĊĠĠĠĠĠ Ġvalues . add ( value Ġas ĠAny ) ĊĠĠĠĠĠ Ġc Ġ= Ġparser . next Clean () ĊĠĠĠĠĠ Ġif Ġ( c Ġ== Ġ' ]') Ġreturn ĊĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġ', ') Ġthrow ĠJSON SyntaxError (" Expected Ġ',' Ġor Ġ' ]' Ġafter Ġvalue , Ġgot Ġ'$ c ' Ġinstead ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConverts Ġthe ĠJSONArray Ġinto Ġa Ġlist . ĠAll ĠJSON Objects Ġand ĠJSON Arrays ĊĠĠ Ġ* Ġcontained Ġwithin Ġthis ĠJSONArray Ġwill Ġbe Ġconverted Ġinto Ġtheir ĊĠĠ Ġ* ĠMap Ġor ĠList Ġform Ġas Ġwell ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġa Ġlist Ġof Ġthe Ġvalues Ġof Ġthis Ġarray ĊĠĠ Ġ*/ ĊĠ Ġfun Ġto List (): ĠList < Any > Ġ{ ĊĠĠĠ Ġval Ġlist : ĠMutable List < Any > Ġ= ĠArrayList () ĊĠĠĠ Ġfor Ġ( value Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( value Ġis ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( value . toMap ()) ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠJSONArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( value . toList ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlist ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġa Ġcollection Ġof Ġvalues Ġof Ġthe ĠJSONArray . ĊĠĠ Ġ* ĠModify ing Ġthe Ġcollection Ġwill Ġmodify Ġthe ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* ĠUse Ġwith Ġca ution . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġa Ġset Ġof Ġentries ĊĠĠ Ġ*/ ĊĠ Ġfun Ġentry Set (): ĠCollection < Any ?> Ġ{ ĊĠĠĠ Ġreturn Ġvalues ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġiterator (): ĠIterator < Any ?> Ġ{ ĊĠĠĠ Ġreturn Ġvalues . iterator () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġnumber Ġof Ġvalues Ġin Ġthe ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġnumber Ġof Ġvalues ĊĠĠ Ġ*/ ĊĠ Ġfun Ġlength (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġvalues . size ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠRemoves Ġall Ġvalues Ġfrom Ġthis ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ since Ġ 1 . 2 . 0 ĊĠĠ Ġ*/ ĊĠ Ġfun Ġclear () Ġ{ ĊĠĠĠ Ġvalues . clear () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠRemoves Ġthe Ġvalue Ġat Ġan Ġindex Ġfrom Ġa ĠJSONArray ĊĠĠ Ġ* Ġto Ġbe Ġremoved ĊĠĠ Ġ* Ġ@ since Ġ 1 . 2 . 0 ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġremove ( index : ĠInt ) Ġ{ ĊĠĠĠ Ġcheck Index ( index ) ĊĠĠĠ Ġvalues . remove At ( index ) ĊĠ Ġ} ĊĠ Ġ// Ġ-- ĠCHECK Ġ-- ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġ` null ` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġ` null ` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Null ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Index ( index ) Ġ== Ġnull ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġa Ġboolean ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġa Ġboolean ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Boolean ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Index ( index ) Ġis ĠBoolean ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġa Ġstring ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġa Ġstring ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis String ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġvalue Ġ= Ġcheck Index ( index ) ĊĠĠĠ Ġreturn Ġvalue Ġis ĠString Ġ|| Ġvalue Ġis ĠInstant ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġa Ġnumber ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġa Ġnumber ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Number ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġvalue Ġ= Ġcheck Index ( index ) ĊĠĠĠ Ġreturn Ġvalue Ġis ĠNumber Ġ|| Ġvalue Ġis ĠInstant ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġa ĠJSONObject ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġa ĠJSONObject ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Object ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Index ( index ) Ġis ĠJSONObject ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġa ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġwhether Ġor Ġnot Ġthe Ġvalue Ġis Ġa ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun ĠisArray ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Index ( index ) Ġis ĠJSONArray ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠChecks Ġif Ġthe Ġvalue Ġwith Ġthe Ġspecified Ġindex Ġis Ġan ĠInstant ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ since Ġ 1 . 1 . 0 ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġfun Ġis Instant ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Index ( index ) Ġis ĠInstant ĊĠ Ġ} ĊĠ Ġ// Ġ-- ĠGET Ġ-- ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġvalue ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist ĊĠĠ Ġ*/ ĊĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠAny ? Ġ{ ĊĠĠĠ Ġcheck Index ( index ) ĊĠĠĠ Ġreturn Ġvalues [ index ] ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġboolean Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġboolean ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġboolean ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Boolean ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: is Boolean , Ġindex , Ġ" boolean ") ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġstring Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġstring ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġstring ĊĠĠ Ġ*/ ĊĠ Ġfun ĠgetString ( index : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: isString , Ġindex , Ġ" string ") ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġnumber Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġnumber ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġnumber ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Number ( index : ĠInt ): ĠNumber Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: isNumber , Ġindex , Ġ" number ") ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġbyte Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġbyte ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġbyte ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Byte ( index : ĠInt ): ĠByte Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). to Byte () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġshort Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġshort ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġshort ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Short ( index : ĠInt ): ĠShort Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). to Short () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġan Ġint Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġint ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġan Ġint ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Int ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). toInt () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġlong Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġlong ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġlong ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Long ( index : ĠInt ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). to Long () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġfloat Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġfloat ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġfloat ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Float ( index : ĠInt ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). toFloat () ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġdouble Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġdouble ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġdouble ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Double ( index : ĠInt ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġget Number ( index ). toDouble () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġ< T > Ġget Number Exact ( ĊĠĠĠ Ġindex : ĠInt , ĊĠĠĠ Ġtype : ĠString , ĊĠĠĠ Ġbigint : ĠFunction < BigInteger , ĠT >, ĊĠĠĠ Ġbig dec : ĠFunction < BigDecimal , ĠT > ĊĠ Ġ): ĠT Ġ{ ĊĠĠĠ Ġval Ġnumber Ġ= Ġget Number ( index ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ( number Ġis ĠBigInteger ) Ġreturn Ġbigint . apply ( number ) ĊĠĠĠĠĠ Ġif Ġ( number Ġis ĠBigDecimal ) Ġreturn Ġbig dec . apply ( number ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow Ġmismatch ( index , Ġtype ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġbyte Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġbyte ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġbyte ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġa Ġbyte , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġbyte ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Byte Exact ( index : ĠInt ): ĠByte Ġ{ ĊĠĠĠ Ġreturn Ġget Number Exact ( ĊĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠ Ġ" byte ", ĊĠĠĠĠĠ Ġ{ Ġobj : ĠBigInteger Ġ-> Ġobj . byte Value Exact () Ġ}, ĊĠĠĠĠĠ ĠBigDecimal :: byte Value Exact ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġshort Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġshort ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġshort ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġa Ġshort , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġshort ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Short Exact ( index : ĠInt ): ĠShort Ġ{ ĊĠĠĠ Ġreturn Ġget Number Exact ( ĊĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠ Ġ" short ", ĊĠĠĠĠĠ Ġ{ Ġobj : ĠBigInteger Ġ-> Ġobj . short Value Exact () Ġ}, ĊĠĠĠĠĠ ĠBigDecimal :: short Value Exact ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġan Ġint Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġan Ġint ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġan Ġint , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġan Ġint ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Int Exact ( index : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Number Exact ( ĊĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠ Ġ" int ", ĊĠĠĠĠĠ Ġ{ Ġobj : ĠBigInteger Ġ-> Ġobj . intValue Exact () Ġ}, ĊĠĠĠĠĠ ĠBigDecimal :: intValue Exact ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġlong Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġlong ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġa Ġlong , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġlong ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Long Exact ( index : ĠInt ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġget Number Exact ( ĊĠĠĠĠĠ Ġindex , ĊĠĠĠĠĠ Ġ" long ", ĊĠĠĠĠĠ Ġ{ Ġobj : ĠBigInteger Ġ-> Ġobj . longValue Exact () Ġ}, ĊĠĠĠĠĠ ĠBigDecimal :: longValue Exact ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġfloat Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġfloat ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġa Ġfloat , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġfloat ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Float Exact ( index : ĠInt ): ĠFloat Ġ{ ĊĠĠĠ Ġval Ġnum Ġ= Ġget Number ( index ) ĊĠĠĠ Ġif Ġ( num Ġis ĠDouble ) Ġ// ĠNaN Ġand ĠInfinity ĊĠĠĠĠĠ Ġreturn Ġnum . toFloat () ĊĠĠĠ Ġval Ġf Ġ= Ġnum . toFloat () ĊĠĠĠ Ġif Ġ(! java . lang . Float . is Finite ( f )) Ġthrow Ġmismatch ( index , Ġ" float ") ĊĠĠĠ Ġreturn Ġf ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġdouble Ġfor Ġa Ġgiven Ġindex . ĊĠĠ Ġ* ĠThis Ġfails Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġdouble ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġthe Ġvalue Ġis Ġnot Ġa Ġdouble , Ġor Ġif Ġthe Ġvalue Ġdoes Ġnot Ġfit Ġinto Ġa Ġdouble ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Double Exact ( index : ĠInt ): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġnum Ġ= Ġget Number ( index ) ĊĠĠĠ Ġif Ġ( num Ġis ĠDouble ) Ġ// ĠNaN Ġand ĠInfinity ĊĠĠĠĠĠ Ġreturn Ġnum ĊĠĠĠ Ġval Ġd Ġ= Ġnum . toDouble () ĊĠĠĠ Ġif Ġ(! java . lang . Double . is Finite ( d )) Ġthrow Ġmismatch ( index , Ġ" double ") ĊĠĠĠ Ġreturn Ġd ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa ĠJSONObject Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe ĠJSONObject ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa ĠJSONObject ĊĠĠ Ġ*/ ĊĠ Ġfun ĠgetObject ( index : ĠInt ): ĠJSONObject Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: isObject , Ġindex , Ġ" object ") ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa ĠJSONArray Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa ĠJSONArray ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Array ( index : ĠInt ): ĠJSONArray Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: isArray , Ġindex , Ġ" array ") ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġan ĠInstant Ġfor Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe ĠInstant ĊĠĠ Ġ* Ġ@ since Ġ 1 . 1 . 0 ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ throws ĠJSON Exception Ġif Ġthe Ġindex Ġdoes Ġnot Ġexist , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġan ĠInstant ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Instant ( index : ĠInt ): ĠInstant Ġ{ ĊĠĠĠ Ġreturn Ġcheck Type (:: is Instant , Ġindex , Ġ" instant ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġ< T > Ġget Opt ( index : ĠInt , Ġsupplier : ĠFunction < Int , ĠT >, Ġdefaults : ĠT ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġsupplier . apply ( index ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġdefaults ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ*/ ĊĠ Ġoperator Ġfun Ġget ( index : ĠInt , Ġdefaults : ĠAny ): ĠAny ? Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġ:: get , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġboolean Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Boolean ( index : ĠInt , Ġdefaults : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getBoolean , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġstring Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun ĠgetString ( index : ĠInt , Ġdefaults : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getString , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġnumber Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Number ( index : ĠInt , Ġdefaults : ĠNumber ): ĠNumber Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getNumber , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġbyte Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Byte ( index : ĠInt , Ġdefaults : ĠByte ): ĠByte Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getByte , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġshort Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Short ( index : ĠInt , Ġdefaults : ĠShort ): ĠShort Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Short , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġan Ġint Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Int ( index : ĠInt , Ġdefaults : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getInt , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġlong Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Long ( index : ĠInt , Ġdefaults : ĠLong ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getLong , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġfloat Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Float ( index : ĠInt , Ġdefaults : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Float , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa Ġdouble Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Double ( index : ĠInt , Ġdefaults : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getDouble , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġbyte Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Byte Exact ( index : ĠInt , Ġdefaults : ĠByte ): ĠByte Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getByte Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġshort Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Short Exact ( index : ĠInt , Ġdefaults : ĠShort ): ĠShort Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Short Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġan Ġint Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Int Exact ( index : ĠInt , Ġdefaults : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getInt Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġlong Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Long Exact ( index : ĠInt , Ġdefaults : ĠLong ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getLong Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġfloat Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Float Exact ( index : ĠInt , Ġdefaults : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Float Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġexact Ġvalue Ġas Ġa Ġdouble Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Double Exact ( index : ĠInt , Ġdefaults : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getDouble Exact , Ġdefaults ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa ĠJSONObject Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ*/ ĊĠ Ġfun ĠgetObject ( index : ĠInt , Ġdefaults : ĠJSONObject ): ĠJSONObject Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: getObject , Ġdefaults ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġa ĠJSONArray Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Array ( index : ĠInt , Ġdefaults : ĠJSONArray ): ĠJSONArray Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Array , Ġdefaults ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġvalue Ġas Ġan ĠInstant Ġfor Ġa Ġgiven Ġindex , Ġor Ġ[ defaults ] Ġif Ġthe Ġoperation Ġis Ġnot Ġpossible ĊĠĠ Ġ* Ġ@ since Ġ 1 . 1 . 0 ĊĠĠ Ġ*/ ĊĠ Ġfun Ġget Instant ( index : ĠInt , Ġdefaults : ĠInstant ): ĠInstant Ġ{ ĊĠĠĠ Ġreturn Ġget Opt ( index , Ġthis :: get Instant , Ġdefaults ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAdds Ġa Ġvalue Ġto Ġthe ĠJSONArray ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthis ĠJSONArray ĊĠĠ Ġ*/ ĊĠ Ġfun Ġadd ( value : ĠAny ?): ĠJSONArray Ġ{ ĊĠĠĠ Ġvalues . add ( JSONObject . sanitize ( value )) ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInser ts Ġa Ġvalue Ġto Ġthe ĠJSONArray Ġat Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ since Ġ 1 . 1 . 0 ĊĠĠ Ġ*/ ĊĠ Ġfun Ġinsert ( index : ĠInt , Ġvalue : ĠAny ?): ĠJSONArray Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ< Ġ 0 Ġ|| Ġindex Ġ> Ġlength ()) Ġthrow ĠJSON Exception (" JSONArray [$ index ] Ġis Ġout Ġof Ġbounds ") ĊĠĠĠ Ġvalues . add ( index , ĠJSONObject . sanitize ( value )) ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSets Ġthe Ġvalue Ġat Ġa Ġgiven Ġindex ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthis ĠJSONArray ĊĠĠ Ġ*/ ĊĠ Ġoperator Ġfun Ġset ( index : ĠInt , Ġvalue : ĠAny ?): ĠJSONArray Ġ{ ĊĠĠĠ Ġcheck Index ( index ) ĊĠĠĠ Ġvalues [ index ] Ġ= ĠJSONObject . sanitize ( value ) ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConverts Ġthe ĠJSONArray Ġinto Ġits Ġstring Ġrepresentation . ĊĠĠ Ġ* ĠThe Ġindentation Ġfactor Ġenables Ġpretty - printing Ġand Ġdefines ĊĠĠ Ġ* Ġhow Ġmany Ġspaces Ġ(' Ġ') Ġshould Ġbe Ġplaced Ġbefore Ġeach Ġvalue . ĊĠĠ Ġ* ĠA Ġfactor Ġof Ġ`< Ġ 1 ` Ġdisables Ġpretty - printing Ġand Ġdis cards ĊĠĠ Ġ* Ġany Ġoptional Ġwhitespace Ġcharacters . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ* Ġ` indent Factor Ġ= Ġ 2 `: ĊĠĠ Ġ* Ġ< pre > ĊĠĠ Ġ* Ġ[ ĊĠĠ Ġ* Ġ" value ", ĊĠĠ Ġ* Ġ{ ĊĠĠ Ġ* Ġ" nested ": Ġ 1 2 3 ĊĠĠ Ġ* Ġ}, ĊĠĠ Ġ* Ġfalse ĊĠĠ Ġ* Ġ] ĊĠ Ġ</ pre > Ġ* ĊĠĠ Ġ* ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ` indent Factor Ġ= Ġ 0 `: ĊĠĠ Ġ* Ġ< pre > ĊĠĠ Ġ* Ġ[" value ", {" nested ": 1 2 3 }, false ] ĊĠ Ġ</ pre > Ġ* ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġindent Factor Ġthe Ġindentation Ġfactor ĊĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġrepresentation ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ see ĠJSON String ify . toString ĊĠĠ Ġ*/ ĊĠ Ġfun Ġpretty Print ( indent Factor : ĠInt , Ġoptions : ĠJSON Options ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠJSON String ify . json Array ToString ( this , Ġindent Factor Ġ= Ġindent Factor , Ġoptions Ġ= Ġoptions ) ĊĠ Ġ} ĊĠ Ġ/** ĊĠĠ Ġ* ĠConverts Ġthe ĠJSONArray Ġinto Ġits Ġcompact Ġstring Ġrepresentation . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġthe Ġcompact Ġstring Ġrepresentation ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġpretty Print ( 0 , ĠJSON Options ()) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcheck Index ( index : ĠInt ): ĠAny ? Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ< Ġ 0 Ġ|| Ġindex Ġ>= Ġlength ()) Ġthrow ĠJSON Exception (" JSONArray [$ index ] Ġdoes Ġnot Ġexist ") ĊĠĠĠ Ġreturn Ġvalues [ index ] ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġ< T > Ġcheck Type ( predicate : ĠPredicate < Int >, Ġindex : ĠInt , Ġtype : ĠString ): ĠT Ġ{ ĊĠĠĠ Ġif Ġ(! predicate . test ( index )) Ġthrow Ġmismatch ( index , Ġtype ) ĊĠĠĠ Ġreturn Ġvalues [ index ] Ġas ĠT ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġmismatch ( index : ĠInt , Ġtype : ĠString ): ĠJSON Exception Ġ{ ĊĠĠĠĠĠ Ġreturn ĠJSON Exception (" JSONArray [$ index ] Ġis Ġnot Ġof Ġtype Ġ$ type ") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ