@ file : Suppress (" unused ") Ċ Ċ package Ġio . bar dd oo Ċ Ċ /* Ċ ĠCopyright Ġ( c ) Ġ 2 0 0 2 ĠJSON . org ĊĊ Ġ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 Ġshall Ġbe Ġused Ġfor ĠGood , Ġnot ĠE vil . ĊĊ Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġjava . io . Closeable Ċ import Ġjava . io . IOException Ċ import Ġjava . io . String Writer Ċ import Ġjava . io . Writer Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjava . lang . reflect . Method Ċ import Ġjava . lang . reflect . Modifier Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern ĊĊ Ċ /** Ċ Ġ* ĠA ĠK son Ġis Ġan Ġunordered Ġcollection Ġof Ġname / value Ġpairs . ĠIts Ġexternal Ġform Ġis Ġa Ċ Ġ* Ġstring Ġwrapped Ġin Ġcur ly Ġbr aces Ġwith Ġcol ons Ġbetween Ġthe Ġnames Ġand Ġvalues , Ġand Ġcommas Ġbetween Ġthe Ċ Ġ* Ġvalues Ġand Ġnames . ĠThe Ġinternal Ġform Ġis Ġan Ġobject Ġhaving Ġ` get ` Ġand Ġ` opt ` Ċ Ġ* Ġmethods Ġfor Ġaccessing Ġthe Ġvalues Ġby Ġname , Ġand Ġ` put ` Ġmethods Ġfor Ġadding Ġor Ġreplacing Ċ Ġ* Ġvalues Ġby Ġname . ĠThe Ġvalues Ġcan Ġbe Ġany Ġof Ġthese Ġtypes : Ġ` Boolean `, Ċ Ġ* Ġ` K son Array `, Ġ` K son `, Ġ` Number `, Ċ Ġ* Ġ` String `, Ġor Ġthe Ġ` K son . NULL ` Ġobject . ĠA Ċ Ġ* ĠK son Ġconstructor Ġcan Ġbe Ġused Ġto Ġconvert Ġan Ġexternal Ġform ĠJSON Ġtext Ġinto Ġan Ċ Ġ* Ġinternal Ġform Ġwhose Ġvalues Ġcan Ġbe Ġretrieved Ġwith Ġthe Ċ Ġ* Ġ` get ` Ġand Ġ` opt ` Ġmethods , Ġor Ġto Ġconvert Ġvalues Ġinto Ġa Ċ Ġ* ĠJSON Ġtext Ġusing Ġthe Ġ` put ` Ġand Ġ` toString ` Ġmethods . ĠA Ċ Ġ* Ġ` get ` Ġmethod Ġreturns Ġa Ġvalue Ġif Ġone Ġcan Ġbe Ġfound , Ġand Ġthrows Ġan Ċ Ġ* Ġexception Ġif Ġone Ġcannot Ġbe Ġfound . ĠAn Ġ` opt ` Ġmethod Ġreturns Ġa Ġdefault Ġvalue Ġinstead Ġof Ċ Ġ* Ġthrowing Ġan Ġexception , Ġand Ġso Ġis Ġuseful Ġfor Ġobtaining Ġoptional Ġvalues . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġgeneric Ġ` get ()` Ġmethods Ġreturn Ġan Ġobject , Ġwhich Ġyou Ġcan Ġcast Ġor Ġquery Ġfor Ġtype . Ċ Ġ* ĠThere Ġare Ġalso Ġtyped Ġ` get ` Ġmethods Ġthat Ġdo Ġtype Ġchecking Ġand Ġtype Ċ Ġ* Ġco erc ion Ġfor Ġyou . ĠThe Ġopt Ġmethods Ġdiffer Ġfrom Ġthe Ġget Ġmethods Ġin Ġthat Ġthey Ġdo Ġnot Ġthrow . ĠInstead , Ċ Ġ* Ġthey Ġreturn Ġa Ġspecified Ġvalue , Ġsuch Ġas Ġnull . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġ` put ` Ġmethods Ġadd Ġor Ġreplace Ġvalues Ġin Ġan Ġobject . ĠFor Ġexample , Ċ Ġ* Ċ Ġ* Ġ` my String Ġ= Ġnew ĠK son (). put (" JSON ", Ġ" Hello , ĠWorld ! "). toString (); ` Ċ Ġ* Ċ Ġ* Ġproduces Ġthe Ġstring Ġ`{" JSON ": Ġ" Hello , ĠWorld "} `. Ċ Ġ* Ċ Ġ* ĠThe Ġtexts Ġproduced Ġby Ġthe Ġ` toString ` Ġmethods Ġstrictly Ġconform Ġto Ġthe ĠJSON Ġsyntax Ċ Ġ* Ġrules . ĠThe Ġconstructors Ġare Ġmore Ġfor g iving Ġin Ġthe Ġtexts Ġthey Ġwill Ġaccept : Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠAn Ġextra Ġ`, ` Ġ( comma ) Ġmay Ġappear Ġjust Ċ Ġ* Ġbefore Ġthe Ġclosing Ġbr ace . Ċ Ġ* Ġ Ġ* ĠStrings Ġmay Ġbe Ġquoted Ġwith Ġ` '` Ġ( single Ċ Ġ* Ġquote ). Ċ Ġ* Ġ Ġ* ĠStrings Ġdo Ġnot Ġneed Ġto Ġbe Ġquoted Ġat Ġall Ġif Ġthey Ġdo Ġnot Ġbegin Ġwith Ġa Ċ Ġ* Ġquote Ġor Ġsingle Ġquote , Ġand Ġif Ġthey Ġdo Ġnot Ġcontain Ġleading Ġor Ġtrailing Ċ Ġ* Ġspaces , Ġand Ġif Ġthey Ġdo Ġnot Ġcontain Ġany Ġof Ġthese Ġcharacters : Ċ Ġ* Ġ`{ Ġ} Ġ[ Ġ] Ġ/ Ġ\ Ġ: Ġ, Ġ# ` Ġand Ġif Ġthey Ġdo Ġnot Ġlook Ġlike Ġnumbers Ġand Ċ Ġ* Ġif Ġthey Ġare Ġnot Ġthe Ġreserved Ġwords Ġ` true `, Ġ` false `, Ċ Ġ* Ġor Ġ` null `. Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author ĠChar les ĠF onse ca Ċ Ġ* Ġ@ version Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠK son () Ġ: ĠLinkedHashMap < String , ĠAny ?> () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġa Ġsubset Ġof Ġanother ĠK son . ĠAn Ġarray Ġof ĊĠĠĠĠ Ġ* Ġstrings Ġis Ġused Ġto Ġidentify Ġthe Ġkeys Ġthat Ġshould Ġbe Ġcopied . ĠMissing Ġkeys Ġare Ġignored . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġjo ĠĠĠ ĠA ĠK son . ĊĠĠĠĠ Ġ* Ġ@ param Ġnames ĠAn Ġarray Ġof Ġstrings . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( jo : ĠK son , Ġvar arg Ġnames : ĠString ) Ġ: Ġthis ( names . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( name Ġin Ġnames ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( name , Ġjo [ name ] Ġ?: ĠNULL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġa ĠJSON Tok ener . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠA ĠJSON Tok ener Ġobject Ġcontaining Ġthe Ġsource Ġstring . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( x : ĠK son Tok ener ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġc : ĠChar ĊĠĠĠĠĠĠĠ Ġvar Ġkey : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( x . next Clean () Ġ!= Ġ'{ ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġx . syntax Error (" A ĠK son Ġtext Ġmust Ġbegin Ġwith Ġ'{ '") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġx . next Clean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' 0 ' Ġ-> Ġthrow Ġx . syntax Error (" A ĠK son Ġtext Ġmust Ġend Ġwith Ġ' }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . back () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . next Value (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġkey Ġis Ġfollowed Ġby Ġ': '. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġx . next Clean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġ': ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġx . syntax Error (" Expected Ġa Ġ':' Ġafter Ġa Ġkey ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġsyntax Error (..) Ġto Ġinclude Ġerror Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġkey Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get ( key ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkey Ġalready Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġx . syntax Error (" Duplicate Ġkey Ġ'$ key '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġadd Ġvalue Ġif Ġnon - null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠAny ? Ġ= Ġx . next Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( x . next Clean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'; ', Ġ',' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x . next Clean () Ġ== Ġ' }') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx . back () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }' Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġx . syntax Error (" Expected Ġa Ġ',' Ġor Ġ' }' ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa Ġ[ K son ] Ġfrom Ġa ĠMap . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmap ĠA Ġmap Ġobject Ġthat Ġcan Ġbe Ġused Ġto Ġinitialize Ġthe Ġcontents Ġof Ġthe Ġ[ K son ]. ĠIf ĊĠĠĠĠ Ġ* Ġthe Ġkey Ġnull , Ġit Ġwill Ġbe Ġignored . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( map : ĠMap < *, Ġ* >) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmap ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key . toString ()] Ġ= Ġwrap ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthrow ĠK son Exception (" json ĠKey Ġmust Ġnot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġan ĠObject Ġusing Ġbean Ġgetters . ĠIt Ġreflect s Ġon Ġall Ġof Ġthe ĊĠĠĠĠ Ġ* Ġpublic Ġmethods Ġof Ġthe Ġobject . ĠFor Ġeach Ġof Ġthe Ġmethods Ġwith Ġno Ġparameters Ġand Ġa Ġname Ġstarting ĊĠĠĠĠ Ġ* Ġwith Ġ`" get "` Ġor ĊĠĠĠĠ Ġ* Ġ`" is "` Ġfollowed Ġby Ġan Ġuppercase Ġletter , Ġthe Ġmethod Ġis Ġinvoked , ĊĠĠĠĠ Ġ* Ġand Ġa Ġkey Ġand Ġthe Ġvalue Ġreturned Ġfrom Ġthe Ġgetter Ġmethod Ġare Ġput Ġinto Ġthe Ġnew ĊĠĠĠĠ Ġ* ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġkey Ġis Ġformed Ġby Ġremoving Ġthe Ġ`" get "` Ġor Ġ`" is "` Ġprefix . ĠIf Ġthe Ġsecond ĊĠĠĠĠ Ġ* Ġremaining Ġcharacter Ġis Ġnot Ġupper Ġcase , Ġthen Ġthe Ġfirst Ġcharacter Ġis Ġconverted Ġto Ġlower Ġcase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠMethods Ġthat Ġare Ġ` static `, Ġreturn Ġ` void `, Ġhave Ġparameters , Ġor Ġare ĊĠĠĠĠ Ġ* Ġ" bridge " Ġmethods , Ġare Ġignored . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġexample , Ġif Ġan Ġobject Ġhas Ġa Ġmethod Ġnamed Ġ`" getName "`, Ġand Ġif Ġthe Ġresult Ġof ĊĠĠĠĠ Ġ* Ġcalling Ġ` object . getName ()` Ġis ĊĠĠĠĠ Ġ* Ġ`" L arry ĠF ine "`, Ġthen Ġthe ĠK son Ġwill Ġcontain ĊĠĠĠĠ Ġ* Ġ`" name ": Ġ" L arry ĠF ine " `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ K son PropertyName ] Ġannotation Ġcan Ġbe Ġused Ġon Ġa Ġbean Ġgetter Ġto Ġoverride Ġkey Ġname Ġused ĊĠĠĠĠ Ġ* Ġin Ġthe ĠK son . ĠFor Ġexample , Ġusing Ġthe Ġobject Ġabove Ġwith Ġthe Ġ` getName ` ĊĠĠĠĠ Ġ* Ġmethod , Ġif Ġwe Ġannotated Ġit Ġwith : ĊĠĠĠĠ Ġ* Ġ< pre > ĊĠĠĠĠ Ġ* Ġ&# 6 4 ; JSON PropertyName (" FullName ") ĊĠĠĠĠ Ġ* Ġpublic ĠString ĠgetName () Ġ{ Ġreturn Ġthis . name ; Ġ} ĊĠĠĠĠ Ġ* Ġ</ pre > ĊĠĠĠĠ Ġ* ĠThe Ġresulting ĠJSON Ġobject Ġwould Ġcontain Ġ`" FullName ": Ġ" L arry ĠF ine "` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSimilar ly , Ġthe Ġ[ K son PropertyName ] Ġannotation Ġcan Ġbe Ġused Ġon Ġnon - ĊĠĠĠĠ Ġ* Ġ` get ` Ġand Ġ` is ` Ġmethods . ĠWe Ġcan Ġalso Ġoverride Ġkey ĊĠĠĠĠ Ġ* Ġname Ġused Ġin Ġthe ĠK son Ġas Ġseen Ġbelow Ġeven Ġthough Ġthe Ġfield Ġwould Ġnormally Ġbe ĊĠĠĠĠ Ġ* Ġignored : ĊĠĠĠĠ Ġ* Ġ< pre > ĊĠĠĠĠ Ġ* Ġ&# 6 4 ; JSON PropertyName (" FullName ") ĊĠĠĠĠ Ġ* Ġpublic ĠString ĠfullName () Ġ{ Ġreturn Ġthis . name ; Ġ} ĊĠĠĠ Ġ</ pre > Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġresulting ĠJSON Ġobject Ġwould Ġcontain Ġ`" FullName ": Ġ" L arry ĠF ine "` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġ[ K son Property Ignore ] Ġannotation Ġcan Ġbe Ġused Ġto Ġforce Ġthe Ġbean Ġproperty Ġto Ġnot Ġbe ĊĠĠĠĠ Ġ* Ġserialized Ġinto ĠJSON . ĠIf Ġboth Ġ[ K son Property Ignore ] Ġand Ġ[ K son PropertyName ] Ġare ĊĠĠĠĠ Ġ* Ġdefined Ġon Ġthe Ġsame Ġmethod , Ġa Ġdepth Ġcomparison Ġis Ġperformed Ġand Ġthe Ġone Ġclosest Ġto Ġthe Ġconcrete ĊĠĠĠĠ Ġ* Ġclass Ġbeing Ġserialized Ġis Ġused . ĠIf Ġboth Ġannotations Ġare Ġat Ġthe Ġsame Ġlevel , Ġthen Ġthe Ġ[ Ġ] Ġannotation Ġtakes Ġpreced ent Ġand Ġthe Ġfield Ġis Ġnot Ġserialized . ĠFor Ġexample , ĊĠĠĠĠ Ġ* Ġthe Ġfollowing Ġdeclaration Ġwould Ġprevent Ġthe Ġ` getName ` Ġmethod Ġfrom Ġbeing Ġserialized : ĊĠĠĠĠ Ġ* Ġ&# 6 4 ; JSON PropertyName (" FullName ") ĊĠĠĠĠ Ġ* Ġ&# 6 4 ; JSON Property Ignore ĊĠĠĠĠ Ġ* Ġpublic ĠString ĠgetName () Ġ{ Ġreturn Ġthis . name ; Ġ} ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbean ĠAn Ġobject Ġthat Ġhas Ġgetter Ġmethods Ġthat Ġshould Ġbe Ġused Ġto Ġmake Ġa ĊĠĠĠĠ Ġ* ĠK son . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( bean : ĠAny ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġpopulate Map ( bean ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġan ĠObject , Ġusing Ġreflection Ġto Ġfind Ġthe Ġpublic Ġmembers . ĊĠĠĠĠ Ġ* ĠThe Ġresulting ĠK son 's Ġkeys Ġwill Ġbe Ġthe Ġstrings Ġfrom Ġthe Ġnames Ġarray , Ġand Ġthe ĊĠĠĠĠ Ġ* Ġvalues Ġwill Ġbe Ġthe Ġfield Ġvalues Ġassociated Ġwith Ġthose Ġkeys Ġin Ġthe Ġobject . ĠIf Ġa Ġkey Ġis Ġnot Ġfound ĊĠĠĠĠ Ġ* Ġor Ġnot Ġvisible , Ġthen Ġit Ġwill Ġnot Ġbe Ġcopied Ġinto Ġthe Ġnew ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ` object ` ĠAn Ġobject Ġthat Ġhas Ġfields Ġthat Ġshould Ġbe Ġused Ġto Ġmake Ġa ĠK son . ĊĠĠĠĠ Ġ* Ġ@ param Ġnames Ġ ĠAn Ġarray Ġof Ġstrings , Ġthe Ġnames Ġof Ġthe Ġfields Ġto Ġbe Ġobtained Ġfrom Ġthe Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( other : ĠAny , Ġvar arg Ġnames : ĠString ?) Ġ: Ġthis ( names . size ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc : ĠClass < *> Ġ= Ġother :: class . java ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġnames . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnames [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( name , Ġc . getField ( name )[ other ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġa Ġsource ĠJSON Ġtext Ġstring . ĠThis Ġis Ġthe Ġmost Ġcommonly Ġused ĊĠĠĠĠ Ġ* ĠK son Ġconstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsource ĠA Ġstring Ġbeginning Ġwith Ġ`{ ` Ġ( left Ġbr ace ) Ġand ĊĠĠĠĠ Ġ* Ġending Ġwith Ġ` }` Ġ Ġ( right Ġbr ace ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( source : ĠString ) Ġ: Ġthis ( K son Tok ener ( source )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstruct Ġa ĠK son Ġfrom Ġa ĠResource Bundle . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbase Name ĠThe ĠResource Bundle Ġbase Ġname . ĊĠĠĠĠ Ġ* Ġ@ param Ġlocale ĠĠ ĠThe ĠLocale Ġto Ġload Ġthe ĠResource Bundle Ġfor . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠIf Ġany ĠJSON Exceptions Ġare Ġdetected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( base Name : ĠString , Ġlocale : ĠLocale ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠResource Bundle . get Bundle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name , Ġlocale , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIterate Ġthrough Ġthe Ġkeys Ġin Ġthe Ġbundle . ĊĠĠĠĠĠĠĠ Ġval Ġkeys Ġ= Ġbundle . keys ĊĠĠĠĠĠĠĠ Ġwhile Ġ( keys . hasMore Elements ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey : ĠAny ? Ġ= Ġkeys . nextElement () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo Ġthrough Ġthe Ġpath , Ġensuring Ġthat Ġthere Ġis Ġa Ġnested ĠK son Ġfor Ġeach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsegment Ġexcept Ġthe Ġlast . ĠAdd Ġthe Ġvalue Ġusing Ġthe Ġlast Ġsegment 's Ġname Ġinto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġdee pe st Ġnested ĠK son . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġ( key Ġas ĠString ). split ("\\ .". to Regex ()). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġpath . size Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtarget Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlast ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsegment Ġ= Ġpath [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnext Target Ġ= Ġtarget . json ( segment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( next Target Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Target Ġ= ĠK son () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget [ segment ] Ġ= Ġnext Target ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= Ġnext Target ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget [ path [ last ]] Ġ= Ġbundle . getString ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAcc um ulate Ġvalues Ġunder Ġa Ġkey . ĠIt Ġis Ġsimilar Ġto Ġthe Ġput Ġmethod Ġexcept Ġthat Ġif Ġthere Ġis Ġalready ĊĠĠĠĠ Ġ* Ġan Ġobject Ġstored Ġunder Ġthe Ġkey Ġthen Ġa ĠK son Array Ġis Ġstored Ġunder Ġthe Ġkey Ġto Ġhold Ġall Ġof ĊĠĠĠĠ Ġ* Ġthe Ġaccumulated Ġvalues . ĠIf Ġthere Ġis Ġalready Ġa ĠK son Array , Ġthen Ġthe Ġnew Ġvalue Ġis ĊĠĠĠĠ Ġ* Ġappended Ġto Ġit . ĠIn Ġcontrast , Ġthe Ġput Ġmethod Ġreplaces Ġthe Ġprevious Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġonly Ġone Ġvalue Ġis Ġaccumulated Ġthat Ġis Ġnot Ġa ĠK son Array , Ġthen Ġthe Ġresult Ġwill Ġbe Ġthe ĊĠĠĠĠ Ġ* Ġsame Ġas Ġusing Ġput . ĠBut Ġif Ġmultiple Ġvalues Ġare Ġaccumulated , Ġthen Ġthe Ġresult Ġwill Ġbe Ġlike ĊĠĠĠĠ Ġ* Ġappend . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠ ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠAn Ġobject Ġto Ġbe Ġaccumulated Ġunder Ġthe Ġkey . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġaccum ulate ( key : ĠString , Ġvalue : ĠAny ): ĠK son Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Validity ( value ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġany Ġ= Ġget ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġif Ġ( value Ġis ĠK son Array ) ĠK son Array (). add ( value ) Ġelse Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK son Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= ĠK son Array (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( any ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAppend Ġvalues Ġto Ġthe Ġarray Ġunder Ġa Ġkey . ĠIf Ġthe Ġkey Ġdoes Ġnot Ġexist Ġin Ġthe ĠK son , ĊĠĠĠĠ Ġ* Ġthen Ġthe Ġkey Ġis Ġput Ġin Ġthe ĠK son Ġwith Ġits Ġvalue Ġbeing Ġa ĠK son Array ĊĠĠĠĠ Ġ* Ġcontaining Ġthe Ġvalue Ġparameter . ĠIf Ġthe Ġkey Ġwas Ġalready Ġassociated Ġwith Ġa ĠK son Array , ĊĠĠĠĠ Ġ* Ġthen Ġthe Ġvalue Ġparameter Ġis Ġappended Ġto Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠ ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠAn Ġobject Ġto Ġbe Ġaccumulated Ġunder Ġthe Ġkey . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠĠĠĠĠĠĠ ĠIf Ġthe Ġvalue Ġis Ġnon - finite Ġnumber Ġor Ġif Ġthe Ġcurrent Ġvalue ĊĠĠĠĠ Ġ* Ġassociated Ġwith Ġthe Ġkey Ġis Ġnot Ġa ĠK son Array . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġappend ( key : ĠString , Ġvalue : ĠAny ): ĠK son Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Validity ( value ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġany Ġ= Ġget ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= ĠK son Array (). add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK son Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġany . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġwrong Value FormatException ( key , Ġ" K son Array ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġif Ġthe ĠK son Ġcontains Ġa Ġspecific Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġkey Ġexists Ġin Ġthe ĠK son . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . containsKey ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIncrement Ġa Ġproperty Ġof Ġa ĠK son . ĠIf Ġthere Ġis Ġno Ġsuch Ġproperty , Ġcreate Ġone Ġwith Ġa ĊĠĠĠĠ Ġ* Ġvalue Ġof Ġ 1 Ġ( Integer ). ĠIf Ġthere Ġis Ġsuch Ġa Ġproperty , Ġand Ġif Ġit Ġis Ġan ĠInteger , ĠLong , ĠDouble , ĊĠĠĠĠ Ġ* ĠFloat , ĠBigInteger , Ġor ĠBigDecimal Ġthen Ġadd Ġone Ġto Ġit . ĠNo Ġoverflow Ġbounds Ġchecking Ġis Ġperformed , ĊĠĠĠĠ Ġ* Ġso Ġcall ers Ġshould Ġinitialize Ġthe Ġkey Ġprior Ġto Ġthis Ġcall Ġwith Ġan Ġappropriate Ġtype Ġthat Ġcan ĊĠĠĠĠ Ġ* Ġhandle Ġthe Ġmaximum Ġexpected Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis . ĊĠĠĠĠ Ġ* ĠLong , ĠDouble , Ġor ĠFloat . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrement ( key : ĠString ): ĠK son Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġvalue Ġ= Ġget ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġ 1 Ġas ĠAny ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . toInt () Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . to Long () Ġ+ Ġ 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBigInteger Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . add ( BigInteger . ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . toFloat () Ġ+ Ġ 1 . 0 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . toDouble () Ġ+ Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBigDecimal Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġvalue . add ( BigDecimal . ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK son Exception (" Unable Ġto Ġincrement Ġ[" Ġ+ Ġquote ( key ) Ġ+ Ġ" ]. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġif Ġthe Ġvalue Ġassociated Ġwith Ġthe Ġkey Ġis Ġ` null ` Ġor Ġif Ġthere Ġis Ġno Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthere Ġis Ġno Ġvalue Ġassociated Ġwith Ġthe Ġkey Ġor Ġif Ġthe Ġvalue Ġis Ġthe ĊĠĠĠĠ Ġ* Ġ[ NULL ] Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Null ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNULL Ġ== Ġget ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPro duce Ġa ĠK son Array Ġcontaining Ġthe Ġnames Ġof Ġthe Ġelements Ġof Ġthis ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA ĠK son Array Ġcontaining Ġthe Ġkey Ġstrings ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnames (): ĠK son Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK son Array ( this . keys ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠE > ĠgetBy ( key : ĠString , ĠdefaultValue : ĠE ? Ġ= Ġnull ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġany Ġ= Ġthis [ key ] ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( any Ġis ĠE ) Ġany Ġelse ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠE > Ġiterator By (): ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . values . filter Is Instance < E >(). iterator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġenum Ġvalue Ġassociated Ġwith Ġa Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ< E > ĠĠĠĠĠĠĠĠĠ ĠEnum ĠType ĊĠĠĠĠ Ġ* Ġ@ param Ġclazz ĠĠĠĠĠĠĠ ĠThe Ġtype Ġof Ġenum Ġto Ġretrieve . ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠĠĠĠĠĠĠĠ ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue ĠThe Ġdefault Ġin Ġcase Ġthe Ġvalue Ġis Ġnot Ġfound ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġenum Ġvalue Ġassociated Ġwith Ġthe Ġkey Ġor ĠdefaultValue Ġif Ġthe Ġvalue Ġis Ġnot Ġfound Ġor ĊĠĠĠĠ Ġ* Ġcannot Ġbe Ġassigned Ġto Ġ` clazz ` ĊĠĠĠ Ġ</ E > Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠE Ġ: ĠEnum < E > ?> Ġget Enum ( clazz : ĠClass < E >, Ġkey : ĠString , ĠdefaultValue : ĠE ? Ġ= Ġnull ): ĠE ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġany Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( NULL Ġ== Ġany ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clazz . isAssignableFrom ( any !!. java Class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġjust Ġchecked Ġit ! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( any Ġis ĠE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġany ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Enum . valueOf ( clazz , Ġany . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe ĠBigDecimal Ġvalue Ġassociated Ġwith Ġa Ġkey . ĠIf Ġthe Ġvalue Ġis Ġfloat Ġor ĊĠĠĠĠ Ġ* Ġdouble , Ġthe Ġthe Ġ[ BigDecimal ] Ġconstructor Ġwill ĊĠĠĠĠ Ġ* Ġbe Ġused . ĠSee Ġnotes Ġon Ġthe Ġconstructor Ġfor Ġconversion Ġissues Ġthat Ġmay ĊĠĠĠĠ Ġ* Ġar ise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġnumeric Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget BigDecimal ( key : ĠString , ĠdefaultValue : ĠBigDecimal ? Ġ= Ġnull ): ĠBigDecimal ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject To BigDecimal ( get ( key ), ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget BigInteger ( key : ĠString , ĠdefaultValue : ĠBigInteger ? Ġ= Ġnull ): ĠBigInteger ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject To BigInteger ( get ( key ), ĠdefaultValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional Ġlong Ġvalue Ġassociated Ġwith Ġa Ġkey , Ġor Ġthe Ġdefault Ġif Ġthere ĊĠĠĠĠ Ġ* Ġis Ġno Ġsuch Ġkey Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġnumber . ĠIf Ġthe Ġvalue Ġis Ġa Ġstring , ĊĠĠĠĠ Ġ* Ġan Ġattempt Ġwill Ġbe Ġmade Ġto Ġevaluate Ġit Ġas Ġa Ġnumber . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue ĊĠĠĠĠ Ġ* ĠThe Ġdefault . ĊĠĠĠĠ Ġ* Ġ@ return ĠAn Ġobject Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Long ( key : ĠString , ĠdefaultValue : ĠLong ? Ġ= Ġnull ): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . getNumber ( key , Ġnull )?. to Long () Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional Ġdouble Ġassociated Ġwith Ġa Ġkey , Ġor ĠNaN Ġif Ġthere Ġis Ġno Ġsuch ĊĠĠĠĠ Ġ* Ġkey Ġor Ġif Ġits Ġvalue Ġis Ġnot Ġa Ġnumber . ĠIf Ġthe Ġvalue Ġis Ġa Ġstring , Ġan Ġattempt ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġmade Ġto Ġevaluate Ġit Ġas Ġa Ġnumber . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġstring Ġwhich Ġis Ġthe Ġkey . ĊĠĠĠĠ Ġ* Ġ@ return ĠAn Ġobject Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Double ( key : ĠString , ĠdefaultValue : ĠDouble ? Ġ= Ġnull ): ĠDouble ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . getNumber ( key )?. toDouble () Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġstring Ġassociated Ġwith Ġa Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġstring Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception Ġif Ġthere Ġis Ġno Ġstring Ġvalue Ġfor Ġthe Ġkey . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun ĠgetString ( key : ĠString , ĠdefaultValue : ĠString ? Ġ= Ġnull ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetBy < String >( key ) Ġ?: ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġint Ġvalue Ġassociated Ġwith Ġa Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġinteger Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĊĠĠĠĠ Ġ* Ġif Ġthe Ġkey Ġis Ġnot Ġfound Ġor Ġif Ġthe Ġvalue Ġcannot Ġbe Ġconverted ĊĠĠĠĠ Ġ* Ġto Ġan Ġinteger . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Int ( key : ĠString , ĠdefaultValue : ĠInt ? Ġ= Ġnull ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . getNumber ( key , Ġnull )?. toInt () Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġoptional Ġdouble Ġvalue Ġassociated Ġwith Ġan Ġindex . ĠThe ĠdefaultValue ĊĠĠĠĠ Ġ* Ġis Ġreturned Ġif Ġthere Ġis Ġno Ġvalue Ġfor Ġthe Ġindex , Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa ĊĠĠĠĠ Ġ* Ġnumber Ġand Ġcannot Ġbe Ġconverted Ġto Ġa Ġnumber . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĊĠĠĠĠ Ġ* ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue ĊĠĠĠĠ Ġ* ĠThe Ġdefault Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Float ( key : ĠString , ĠdefaultValue : ĠFloat ? Ġ= Ġnull ): ĠFloat ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . getNumber ( key )?. toFloat () Ġ?: Ġreturn ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional Ġboolean Ġassociated Ġwith Ġa Ġkey . ĠIt Ġreturns Ġfalse Ġif Ġthere Ġis Ġno Ġsuch Ġkey , Ġor Ġif ĊĠĠĠĠ Ġ* Ġthe Ġvalue Ġis Ġnot ĠBoolean . TRUE Ġor Ġthe ĠString Ġ" true ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġtruth . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Boolean ( key : ĠString , ĠdefaultValue : ĠBoolean ? Ġ= Ġnull ): ĠBoolean ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġany Ġ= Ġget ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" true ". equals ( any , Ġignore Case Ġ= Ġtrue ) Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" false ". equals ( any , Ġignore Case Ġ= Ġtrue ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional ĠK son Array Ġassociated Ġwith Ġa Ġkey . ĠIt Ġreturns Ġnull Ġif Ġthere Ġis Ġno Ġsuch ĊĠĠĠĠ Ġ* Ġkey , Ġor Ġif Ġits Ġvalue Ġis Ġnot Ġa ĠK son Array . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠA ĠK son Array Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġarray ( key : ĠString ): ĠK son Array ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetBy < K son Array >( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional ĠK son Ġassociated Ġwith Ġa Ġkey . ĠIt Ġreturns Ġnull Ġif Ġthere Ġis Ġno Ġsuch ĊĠĠĠĠ Ġ* Ġkey , Ġor Ġif Ġits Ġvalue Ġis Ġnot Ġa ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠA ĠK son Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġjson ( key : ĠString ): ĠK son ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetBy < K son >( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġoptional Ġ[ Number ] Ġvalue Ġassociated Ġwith Ġa Ġkey , Ġor Ġ` null ` Ġif Ġthere Ġis Ġno ĊĠĠĠĠ Ġ* Ġsuch Ġkey Ġor Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġnumber . ĠIf Ġthe Ġvalue Ġis Ġa Ġstring , Ġan Ġattempt Ġwill Ġbe Ġmade Ġto ĊĠĠĠĠ Ġ* Ġevaluate Ġit Ġas Ġa Ġnumber Ġ([ BigDecimal ]). ĠThis Ġmethod Ġwould Ġbe Ġused Ġin Ġcases Ġwhere Ġtype ĊĠĠĠĠ Ġ* Ġco erc ion Ġof Ġthe Ġnumber Ġvalue Ġis Ġun wanted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ return ĠAn Ġobject Ġwhich Ġis Ġthe Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġget Number ( key : ĠString , ĠdefaultValue : ĠNumber ? Ġ= Ġnull ): ĠNumber ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġany Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( NULL Ġ== Ġany ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( any Ġis ĠNumber ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring To Number ( any . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPop ulates Ġthe Ġinternal Ġmap Ġof Ġthe ĠK son Ġwith Ġthe Ġbean Ġproperties . ĠThe Ġbean Ġcan ĊĠĠĠĠ Ġ* Ġnot Ġbe Ġrecursive . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbean Ġthe Ġbean ĊĠĠĠĠ Ġ* Ġ@ see ĠK son ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġpopulate Map ( bean : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġklass : ĠClass < *> Ġ= Ġbean . java Class ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġklass Ġis Ġa ĠSystem Ġclass Ġthen Ġset Ġinclude Super Class Ġto Ġfalse . ĊĠĠĠĠĠĠĠ Ġval Ġinclude Super Class Ġ= Ġklass . class Loader Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġmethods Ġ= Ġif Ġ( include Super Class ) Ġklass . methods Ġelse Ġklass . declared Methods ĊĠĠĠĠĠĠĠ Ġfor Ġ( method Ġin Ġmethods ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodifiers Ġ= Ġmethod . modifiers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Modifier . is Public ( modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! Modifier . is Static ( modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġmethod . parameter Types . isEmpty () Ġ&& Ġ! method . is Bridge ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġmethod . returnType Ġ!= ĠVoid . TYPE Ġ&& ĠisValid MethodName ( method . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġget KeyName From Method ( method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ!= Ġnull Ġ&& Ġkey . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmethod . invoke ( bean ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ key ] Ġ= Ġwrap ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġdon 't Ġuse Ġthe Ġresult Ġanywhere Ġoutside Ġof Ġwrap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġit 's Ġa Ġresource Ġwe Ġshould Ġbe Ġsure Ġto Ġclose Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġafter Ġcalling ĠtoString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠClose able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIllegal AccessException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠInvocation TargetException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPut Ġa Ġkey / value Ġpair Ġin Ġthe ĠK son , Ġwhere Ġthe Ġvalue Ġwill Ġbe Ġa ĠK son Array ĊĠĠĠĠ Ġ* Ġwhich Ġis Ġproduced Ġfrom Ġa ĠCollection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠ ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠA ĠCollection Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠĠĠĠĠĠĠ ĠIf Ġthe Ġvalue Ġis Ġnon - finite Ġnumber . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġput ( key : ĠString , Ġvalue : ĠCollection < T ?> ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . put ( key , ĠK son Array ( value ?. map ToJson Null () Ġ?: ĠNULL )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPut Ġa Ġkey / value Ġpair Ġin Ġthe ĠK son , Ġwhere Ġthe Ġvalue Ġwill Ġbe Ġa ĠK son ĊĠĠĠĠ Ġ* Ġwhich Ġis Ġproduced Ġfrom Ġa ĠMap . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠ ĠA Ġkey Ġstring . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠA ĠMap Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠĠĠĠĠĠĠ ĠIf Ġthe Ġvalue Ġis Ġnon - finite Ġnumber . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġput ( key : ĠString , Ġvalue : ĠMap < *, Ġ* >): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . put ( key , ĠK son ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġput ( key : ĠString , Ġvalue : ĠAny ?): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Validity ( value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . put ( key , Ġvalue Ġ?: ĠNULL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQueries Ġand Ġreturns Ġa Ġvalue Ġfrom Ġthis Ġobject Ġusing Ġ` k son Pointer `, Ġor ĊĠĠĠĠ Ġ* Ġreturns Ġnull Ġif Ġthe Ġquery Ġfails Ġdue Ġto Ġa Ġmissing Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġk son Pointer Ġthe Ġstring Ġrepresentation Ġof Ġthe ĠJSON Ġpointer ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġqueried Ġvalue Ġor Ġ` null ` ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` k son Pointer ` Ġhas Ġinvalid Ġsyntax ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġquery ( json Pointer : ĠString ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġquery ( K son Pointer ( json Pointer )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠQueries Ġand Ġreturns Ġa Ġvalue Ġfrom Ġthis Ġobject Ġusing Ġ` k son Pointer `, Ġor ĊĠĠĠĠ Ġ* Ġreturns Ġnull Ġif Ġthe Ġquery Ġfails Ġdue Ġto Ġa Ġmissing Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġk son Pointer ĠThe ĠJSON Ġpointer ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġqueried Ġvalue Ġor Ġ` null ` ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġ` k son Pointer ` Ġhas Ġinvalid Ġsyntax ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġquery ( k son Pointer : ĠK son Pointer ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk son Pointer . query From ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠK son PointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetermine Ġif Ġtwo ĠK son s Ġare Ġsimilar . ĠThey Ġmust Ġcontain Ġthe Ġsame Ġset Ġof Ġnames Ġwhich Ġmust Ġbe ĊĠĠĠĠ Ġ* Ġassociated Ġwith Ġsimilar Ġvalues . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother ĠThe Ġother ĠK son ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthey Ġare Ġequal ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsimilar ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠK son ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( keys Ġ!= Ġother . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ(( name , Ġvalue This ) Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Other Ġ= Ġother [ name ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value This Ġ=== Ġvalue Other ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue This Ġis ĠK son Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! value This . similar ( value Other )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue This Ġis ĠK son Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! value This . similar ( value Other )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue This Ġ!= Ġvalue Other Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPro duce Ġa ĠK son Array Ġcontaining Ġthe Ġvalues Ġof Ġthe Ġmembers Ġof Ġthis ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnames ĠA ĠK son Array Ġcontaining Ġa Ġlist Ġof Ġkey Ġstrings . ĠThis Ġdetermines Ġthe ĊĠĠĠĠ Ġ* Ġsequence Ġof Ġthe Ġvalues Ġin Ġthe Ġresult . ĊĠĠĠĠ Ġ* Ġ@ return ĠA ĠK son Array Ġof Ġvalues . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠIf Ġany Ġof Ġthe Ġvalues Ġare Ġnon - finite Ġnumbers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto K son Array ( names : ĠK son Array ?): ĠK son Array ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġja Ġ= ĠK son Array () ĊĠĠĠĠĠĠĠ Ġif Ġ( names Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġfor Ġ( elem Ġin Ġnames ) Ġja . add ( getString ( elem . toString ()) !! ) ĊĠĠĠĠĠĠĠ Ġreturn Ġja ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMake Ġa ĠJSON Ġtext Ġof Ġthis ĠK son . ĠFor Ġcompact ness , Ġno Ġwhitespace Ġis Ġadded . ĠIf Ġthis ĊĠĠĠĠ Ġ* Ġwould Ġnot Ġresult Ġin Ġa Ġsynt act ically Ġcorrect ĠJSON Ġtext , Ġthen Ġnull Ġwill Ġbe Ġreturned Ġinstead . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** ĊĠĠĠĠ Ġ* ĠWarning : ĠThis Ġmethod Ġassumes Ġthat Ġthe Ġdata Ġstructure Ġis Ġac yc lic al . ĊĠĠĠĠ Ġ** Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġprint able , Ġdisplay able , Ġportable , Ġtransmit table Ġrepresentation Ġof Ġthe Ġobject , ĊĠĠĠĠ Ġ* Ġbeginning Ġwith Ġ`{ ` Ġ( left Ġbr ace ) Ġand Ġending Ġwith ĊĠĠĠĠ Ġ* Ġ` }` Ġ( right Ġbr ace ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . toString ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMake Ġa Ġpretty - print ed ĠJSON Ġtext Ġof Ġthis ĠK son . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ` indent Factor Ġ> Ġ 0 ` Ġand Ġthe Ġ[ K son ] ĊĠĠĠĠ Ġ* Ġhas Ġonly Ġone Ġkey , Ġthen Ġthe Ġobject Ġwill Ġbe Ġoutput Ġon Ġa Ġsingle Ġline : ĊĠĠĠĠ Ġ* Ġ< pre >` {" key ": Ġ 1 }` </ pre > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġan Ġobject Ġhas Ġ 2 Ġor Ġmore Ġkeys , Ġthen Ġit Ġwill Ġbe Ġoutput Ġacross ĊĠĠĠĠ Ġ* Ġmultiple Ġlines : Ġ`< pre >{ ĊĠĠĠĠ Ġ* Ġ" key 1 ": Ġ 1 , ĊĠĠĠĠ Ġ* Ġ" key 2 ": Ġ" value Ġ 2 ", ĊĠĠĠĠ Ġ* Ġ" key 3 ": Ġ 3 ĊĠĠĠĠ Ġ* Ġ}</ pre >` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** ĊĠĠĠĠ Ġ* ĠWarning : ĠThis Ġmethod Ġassumes Ġthat Ġthe Ġdata Ġstructure Ġis Ġac yc lic al . ĊĠĠĠĠ Ġ** Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġindent Factor ĠThe Ġnumber Ġof Ġspaces Ġto Ġadd Ġto Ġeach Ġlevel Ġof Ġindentation . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġprint able , Ġdisplay able , Ġportable , Ġtransmit table Ġrepresentation Ġof Ġthe Ġobject , ĊĠĠĠĠ Ġ* Ġbeginning Ġwith Ġ`{ ` Ġ( left Ġbr ace ) Ġand Ġending Ġwith ĊĠĠĠĠ Ġ* Ġ` }` Ġ( right Ġbr ace ). ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠIf Ġthe Ġobject Ġcontains Ġan Ġinvalid Ġnumber . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠtoString ( indent Factor : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġsynchronized ( w . buffer ) Ġ{ Ġreturn Ġwrite ( w , Ġindent Factor , Ġ 0 ). toString () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrite Ġthe Ġcontents Ġof Ġthe ĠK son Ġas ĠJSON Ġtext Ġto Ġa Ġwriter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ` indent Factor Ġ> Ġ 0 ` Ġand Ġthe Ġ[ K son ] ĊĠĠĠĠ Ġ* Ġhas Ġonly Ġone Ġkey , Ġthen Ġthe Ġobject Ġwill Ġbe Ġoutput Ġon Ġa Ġsingle Ġline : ĊĠĠĠĠ Ġ* Ġ< pre >` {" key ": Ġ 1 }` </ pre > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġan Ġobject Ġhas Ġ 2 Ġor Ġmore Ġkeys , Ġthen Ġit Ġwill Ġbe Ġoutput Ġacross ĊĠĠĠĠ Ġ* Ġmultiple Ġlines : Ġ`< pre >{ ĊĠĠĠĠ Ġ* Ġ" key 1 ": Ġ 1 , ĊĠĠĠĠ Ġ* Ġ" key 2 ": Ġ" value Ġ 2 ", ĊĠĠĠĠ Ġ* Ġ" key 3 ": Ġ 3 ĊĠĠĠĠ Ġ* Ġ}</ pre >` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** ĊĠĠĠĠ Ġ* ĠWarning : ĠThis Ġmethod Ġassumes Ġthat Ġthe Ġdata Ġstructure Ġis Ġac yc lic al . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġwriter ĠĠĠĠĠĠ ĠWrites Ġthe Ġserialized ĠJSON ĊĠĠĠĠ Ġ* Ġ@ param Ġindent Factor ĠThe Ġnumber Ġof Ġspaces Ġto Ġadd Ġto Ġeach Ġlevel Ġof Ġindentation . ĊĠĠĠĠ Ġ* Ġ@ param Ġindent ĠĠĠĠĠĠ ĠThe Ġindentation Ġof Ġthe Ġtop Ġlevel . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġwriter . ĊĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġwrite ( writer : ĠWriter , Ġindent Factor : ĠInt Ġ= Ġ 0 , Ġindent : ĠInt Ġ= Ġ 0 ): ĠWriter Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġneeds Comma Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwriter . write ("{ ") ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ== Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry : ĠMap . Entry < String , Ġ*> Ġ= Ġentries . iterator (). next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġentry . key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( quote ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indent Factor Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Value ( writer , Ġentry . value , Ġindent Factor , Ġindent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK son Exception (" Unable Ġto Ġwrite ĠK son Ġvalue Ġfor Ġkey : Ġ$ key ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ!= Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Indent Ġ= Ġindent Ġ+ Ġindent Factor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( needs Comma ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indent Factor Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( writer , Ġnew Indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( quote ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indent Factor Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Value ( writer , Ġvalue , Ġindent Factor , Ġnew Indent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK son Exception (" Unable Ġto Ġwrite ĠK son Ġvalue Ġfor Ġkey : Ġ$ key ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeds Comma Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( indent Factor Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindent ( writer , Ġindent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwriter . write (" }") ĊĠĠĠĠĠĠĠ Ġreturn Ġwriter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġjava . util . Map Ġcontaining Ġall Ġof Ġthe Ġentries Ġin Ġthis Ġobject . ĠIf Ġan Ġentry Ġin Ġthe Ġobject ĊĠĠĠĠ Ġ* Ġis Ġa ĠK son Array Ġor ĠK son Ġit Ġwill Ġalso Ġbe Ġconverted . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWarning : ĠThis Ġmethod Ġassumes Ġthat Ġthe Ġdata Ġstructure Ġis Ġac yc lic al . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġjava . util . Map Ġcontaining Ġthe Ġentries Ġof Ġthis Ġobject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresults : ĠMutable Map < String , ĠAny ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue 1 ) Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠAny ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNULL Ġ== Ġvalue 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 1 Ġis ĠK son Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 1 . toMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 1 Ġis ĠK son Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 1 . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRegular ĠExpression ĠPattern Ġthat Ġmatches ĠJSON ĠNumbers . ĠThis Ġis Ġprimarily Ġused Ġfor Ġoutput Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġguarantee Ġthat Ġwe Ġare Ġalways Ġwriting Ġvalid ĠJSON . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠNUMBER _ PATTERN : ĠPattern Ġ= ĠPattern ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. compile ("- ?( ?: 0 |[ 1 - 9 ]\\ d *)( ?: \\. \\ d + )? (?: [ e E ][ +- ]? \\ d + )? ") ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPro duce Ġa Ġstring Ġfrom Ġa Ġdouble . ĠThe Ġstring Ġ" null " Ġwill Ġbe Ġreturned Ġif Ġthe Ġnumber Ġis Ġnot ĊĠĠĠĠĠĠĠĠ Ġ* Ġfinite . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġd ĠA Ġdouble . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA ĠString . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġdouble ToString ( d : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java . lang . Double . isIn finite ( d ) Ġ|| Ġjava . lang . Double . isNaN ( d )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" null " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSh ave Ġoff Ġtrailing Ġzeros Ġand Ġdecimal Ġpoint , Ġif Ġpossible . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstring Ġ= Ġd . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . indexOf ('.') Ġ> Ġ 0 Ġ&& Ġstring . indexOf (' e ') Ġ< Ġ 0 Ġ&& Ġstring . indexOf (' E ') Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( string . endsWith (" 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ= Ġstring . substring ( 0 , Ġstring . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . endsWith (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ= Ġstring . substring ( 0 , Ġstring . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġan Ġarray Ġof Ġfield Ġnames Ġfrom Ġa ĠK son . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġjo ĠJSON Ġobject ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAn Ġarray Ġof Ġfield Ġnames , Ġor Ġnull Ġif Ġthere Ġare Ġno Ġnames . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Names ( jo : ĠK son ): ĠArray < String ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( jo . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġjo . keys . to Typed Array () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġan Ġarray Ġof Ġpublic Ġfield Ġnames Ġfrom Ġan ĠObject . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġany Ġobject Ġto Ġread ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAn Ġarray Ġof Ġfield Ġnames , Ġor Ġnull Ġif Ġthere Ġare Ġno Ġnames . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġget Names ( any : ĠAny ?): ĠArray < String ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( any Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġklass : ĠClass < *> Ġ= Ġany . java Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġklass . fields ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġfields . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= ĠarrayOf Null s < String >( length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames [ i ] Ġ= Ġfields [ i ]. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnames ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPro duce Ġa Ġstring Ġfrom Ġa ĠNumber . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnumber ĠA ĠNumber ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA ĠString . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠIf Ġn Ġis Ġa Ġnon - finite Ġnumber . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnumber ToString ( number : ĠNumber ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Validity ( number ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSh ave Ġoff Ġtrailing Ġzeros Ġand Ġdecimal Ġpoint , Ġif Ġpossible . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstring Ġ= Ġnumber . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . indexOf ('.') Ġ> Ġ 0 Ġ&& Ġstring . indexOf (' e ') Ġ< Ġ 0 Ġ&& Ġstring . indexOf (' E ') Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( string . endsWith (" 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ= Ġstring . substring ( 0 , Ġstring . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string . endsWith (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ= Ġstring . substring ( 0 , Ġstring . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġval ĠĠĠĠĠĠĠĠĠ Ġvalue Ġto Ġconvert ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġdefault Ġvalue Ġto Ġreturn Ġis Ġthe Ġconversion Ġdoesn 't Ġwork Ġor Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠBigDecimal Ġconversion Ġof Ġthe Ġoriginal Ġvalue , Ġor Ġthe ĠdefaultValue Ġif Ġunable Ġto Ġconvert . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobject To BigDecimal (` val `: ĠAny ?, ĠdefaultValue : ĠBigDecimal ?): ĠBigDecimal ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( NULL Ġ== Ġ` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ` val ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠBigInteger ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal (` val ` Ġas ĠBigInteger ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠDouble Ġ|| Ġ` val ` Ġis ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd : ĠDouble Ġ= Ġ(` val ` Ġas ĠNumber ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( java . lang . Double . isNaN ( d )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠBigDecimal (` val `. toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(` val ` Ġis ĠLong Ġ|| Ġ` val ` Ġis ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ` val ` Ġis ĠShort Ġ|| Ġ` val ` Ġis ĠByte ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal (( ` val ` Ġas ĠNumber ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal (` val `. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġcheck Ġif Ġit 's Ġa Ġstring Ġin Ġcase Ġof Ġunchecked ĠNumber Ġsubclasses ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġval ĠĠĠĠĠĠĠĠĠ Ġvalue Ġto Ġconvert ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠdefaultValue Ġdefault Ġvalue Ġto Ġreturn Ġis Ġthe Ġconversion Ġdoesn 't Ġwork Ġor Ġis Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠBigInteger Ġconversion Ġof Ġthe Ġoriginal Ġvalue , Ġor Ġthe ĠdefaultValue Ġif Ġunable Ġto Ġconvert . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġobject To BigInteger (` val `: ĠAny ?, ĠdefaultValue : ĠBigInteger ? Ġ= Ġnull ): ĠBigInteger ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( NULL Ġ== Ġ` val `) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠBigInteger ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ` val ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ` val `. to BigInteger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val ` Ġis ĠDouble Ġ|| Ġ` val ` Ġis ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd : ĠDouble Ġ= Ġ(` val ` Ġas ĠNumber ). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( java . lang . Double . isNaN ( d )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠBigDecimal ( d ). to BigInteger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(` val ` Ġis ĠLong Ġ|| Ġ` val ` Ġis ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ` val ` Ġis ĠShort Ġ|| Ġ` val ` Ġis ĠByte ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigInteger . valueOf (( ` val ` Ġas ĠNumber ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġother Ġopt Ġfunctions Ġhandle Ġimplicit Ġconversions , Ġi . e . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjo . put (" double ", 1 . 1 d ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjo . opt Int (" double "); Ġ-- Ġwill Ġreturn Ġ 1 , Ġnot Ġan Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġconversion Ġto ĠBigDecimal Ġthen Ġto ĠBigInteger Ġis Ġto Ġmaintain ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthat Ġtype Ġcast Ġsupport Ġthat Ġmay Ġtruncate Ġthe Ġdecimal . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġval Str Ġ= Ġ` val `. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Decimal Not ation ( val Str )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal ( val Str ). to BigInteger () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĠBigInteger ( val Str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdefaultValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġcheck Ġif Ġit 's Ġa Ġstring Ġin Ġcase Ġof Ġunchecked ĠNumber Ġsubclasses ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠisValid MethodName ( name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" getClass " Ġ!= Ġname Ġ&& Ġ" get Decl aring Class " Ġ!= Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget KeyName From Method ( method : ĠMethod ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġignore Depth Ġ= Ġget Annotation Depth ( method , ĠK son Property Ignore :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ignore Depth Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġforced Name Depth Ġ= Ġget Annotation Depth ( method , ĠK son PropertyName :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( forced Name Depth Ġ< Ġ 0 Ġ|| Ġignore Depth Ġ<= Ġforced Name Depth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġhierarchy Ġasked Ġto Ġignore , Ġand Ġthe Ġnearest Ġname Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwas Ġhigher Ġor Ġnon - existent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġget Annotation ( method , ĠK son PropertyName :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( annotation ?. value Ġ!= Ġnull Ġ&& Ġannotation . value . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġannotation . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġkey : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġmethod . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . startsWith (" get ") Ġ&& Ġname . length Ġ> Ġ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . substring ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . startsWith (" is ") Ġ&& Ġname . length Ġ> Ġ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . substring ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġthe Ġfirst Ġletter Ġin Ġthe Ġkey Ġis Ġnot Ġuppercase , Ġthen Ġskip . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġto Ġmaintain Ġbackwards Ġcompatibility Ġbefore ĠPR 4 0 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( https :// github . com / st le ary / JSON - java / pull / 4 0 6 /) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Character . is LowerCase ( key [ 0 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . length Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey . toLowerCase ( Locale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! Character . is UpperCase ( key [ 1 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġkey . substring ( 0 , Ġ 1 ). toLowerCase ( Locale . ROOT ) Ġ+ Ġkey . substring ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkey ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠS ear ches Ġthe Ġclass Ġhierarchy Ġto Ġsee Ġif Ġthe Ġmethod Ġor Ġit 's Ġsuper Ġimplementations Ġand Ġinterfaces ĊĠĠĠĠĠĠĠĠ Ġ* Ġhas Ġthe Ġannotation . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param ĠA Ġtype Ġof Ġthe Ġannotation ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġm Ġmethod Ġto Ġcheck ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġannotation Class Ġannotation Ġto Ġlook Ġfor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġ[ Annotation ] Ġif Ġthe Ġannotation Ġexists Ġon Ġthe Ġcurrent Ġmethod Ġor Ġone Ġof Ġit 's ĊĠĠĠĠĠĠĠĠ Ġ* Ġsuper Ġclass Ġdefinitions ĊĠĠĠĠĠĠĠ Ġ</ A > Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< A Ġ: ĠAnnotation ?> Ġget Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm : ĠMethod ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Class : ĠClass < A > ?, ĊĠĠĠĠĠĠĠ Ġ): ĠA ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġhave Ġinvalid Ġdata Ġthe Ġresult Ġis Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Ġ== Ġnull Ġ|| Ġannotation Class Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . is Annotation Present ( annotation Class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm . getAnnotation ( annotation Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe 've Ġalready Ġreached Ġthe ĠObject Ġclass , Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġm . decl aring Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . super class Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġdirectly Ġimplemented Ġinterfaces Ġfor Ġthe Ġmethod Ġbeing Ġchecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġc . interfaces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġim Ġ= Ġi . getMethod ( m . name , Ġ* m . parameter Types ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Annotation ( im , Ġannotation Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNoSuch Method Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Annotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . super class . getMethod ( m . name , Ġ* m . parameter Types ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNoSuch Method Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠS ear ches Ġthe Ġclass Ġhierarchy Ġto Ġsee Ġif Ġthe Ġmethod Ġor Ġit 's Ġsuper Ġimplementations Ġand Ġinterfaces ĊĠĠĠĠĠĠĠĠ Ġ* Ġhas Ġthe Ġannotation . ĠReturns Ġthe Ġdepth Ġof Ġthe Ġannotation Ġin Ġthe Ġhierarchy . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġ< A > ĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġof Ġthe Ġannotation ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġm ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġto Ġcheck ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġannotation Class Ġannotation Ġto Ġlook Ġfor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠDepth Ġof Ġthe Ġannotation Ġor Ġ- 1 Ġif Ġthe Ġannotation Ġis Ġnot Ġon Ġthe Ġmethod . ĊĠĠĠĠĠĠĠ Ġ</ A > Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Annotation Depth ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm : ĠMethod ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Class : ĠClass < out ĠAnnotation > ?, ĊĠĠĠĠĠĠĠ Ġ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġhave Ġinvalid Ġdata Ġthe Ġresult Ġis Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Ġ== Ġnull Ġ|| Ġannotation Class Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m . is Annotation Present ( annotation Class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe 've Ġalready Ġreached Ġthe ĠObject Ġclass , Ġreturn Ġ- 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġm . decl aring Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c . super class Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġdirectly Ġimplemented Ġinterfaces Ġfor Ġthe Ġmethod Ġbeing Ġchecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġc . interfaces ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġim Ġ= Ġi . getMethod ( m . name , Ġ* m . parameter Types ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Annotation Depth ( im , Ġannotation Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsince Ġthe Ġannotation Ġwas Ġon Ġthe Ġinterface , Ġadd Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġd Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNoSuch Method Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġget Annotation Depth ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . super class . getMethod ( m . name , Ġ* m . parameter Types ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsince Ġthe Ġannotation Ġwas Ġon Ġthe Ġsuperclass , Ġadd Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠSecurity Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNoSuch Method Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPro duce Ġa Ġstring Ġin Ġdouble Ġquotes Ġwith Ġback slash Ġsequences Ġin Ġall Ġthe Ġright Ġplaces . ĠA Ġback slash ĊĠĠĠĠĠĠĠĠ Ġ* Ġwill Ġbe Ġinserted Ġwithin Ġ Ġ</ , Ġproducing Ġ Ġ< \/ , Ġallowing ĠJSON Ġtext Ġto Ġbe Ġdelivered Ġin ĠHTML . ĠIn ĊĠĠĠĠĠĠĠĠ Ġ* ĠJSON Ġtext , Ġa Ġstring Ġcannot Ġcontain Ġa Ġcontrol Ġcharacter Ġor Ġan Ġun escaped Ġquote Ġor Ġback slash . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstring ĠA ĠString ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA ĠString Ġcorrectly Ġformatted Ġfor Ġinsertion Ġin Ġa ĠJSON Ġtext . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġquote ( string : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsw Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( sw . buffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote ( string , Ġsw ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwill Ġnever Ġhappen Ġ- Ġwe Ġare Ġwriting Ġto Ġa Ġstring Ġwriter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġquote ( string : ĠString ?, Ġw : ĠWriter ): ĠWriter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string Ġ== Ġnull Ġ|| Ġstring . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ("\" \" ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġb : ĠChar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġ 0 . to Char () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġh hh h : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġstring . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ('" '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġstring [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( c ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\\ ', Ġ'"' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ('\\ '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ( c . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'/' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b Ġ== Ġ'< ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ('\\ '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ( c . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\ b ' Ġ-> Ġw . write ("\\ b ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\ t ' Ġ-> Ġw . write ("\\ t ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\ n ' Ġ-> Ġw . write ("\\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'\ r ' Ġ-> Ġw . write ("\\ r ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġif Ġ( c Ġ< Ġ' Ġ' Ġ|| Ġc Ġin Ġ'\ u 0 0 8 0 ' .. ' Â Ł ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġc Ġin Ġ'\ u 2 0 0 0 ' .. ' â ĥ ¿ ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ("\\ u ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh hh h Ġ= ĠInteger . to HexString ( c . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write (" 0 0 0 0 ", Ġ 0 , Ġ 4 Ġ- Ġh hh h . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ( hh hh ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ( c . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . write ('" '. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġw ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTests Ġif Ġthe Ġvalue Ġshould Ġbe Ġtried Ġas Ġa Ġdecimal . ĠIt Ġmakes Ġno Ġtest Ġif Ġthere Ġare Ġactual Ġdigits . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġval Ġvalue Ġto Ġtest ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġstring Ġis Ġ"- 0 " Ġor Ġif Ġit Ġcontains Ġ'.', Ġ' e ', Ġor Ġ' E ', Ġfalse Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis Decimal Not ation (` val `: ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ` val `. indexOf ('.') Ġ> Ġ- 1 Ġ|| Ġ` val `. indexOf (' e ') Ġ> Ġ- 1 Ġ|| Ġ` val `. indexOf (' E ') Ġ> Ġ- 1 Ġ|| Ġ"- 0 " Ġ== Ġ` val ` ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConverts Ġa Ġstring Ġto Ġa Ġnumber Ġusing Ġthe Ġnarrow est Ġpossible Ġtype . ĠPossible Ġreturns Ġfor Ġthis ĊĠĠĠĠĠĠĠĠ Ġ* Ġfunction Ġare ĠBigDecimal , ĠDouble , ĠBigInteger , ĠLong , Ġand ĠInteger . ĠWhen Ġa ĠDouble Ġis Ġreturned , Ġit ĊĠĠĠĠĠĠĠĠ Ġ* Ġshould Ġalways Ġbe Ġa Ġvalid ĠDouble Ġand Ġnot ĠNaN Ġor Ġ+- infinity . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġval Ġvalue Ġto Ġconvert ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠNumber Ġrepresentation Ġof Ġthe Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠNumber FormatException Ġthrown Ġif Ġthe Ġvalue Ġis Ġnot Ġa Ġvalid Ġnumber . ĠA Ġpublic Ġcaller Ġshould ĊĠĠĠĠĠĠĠĠ Ġ* Ġcatch Ġthis Ġand Ġwrap Ġit Ġin Ġa Ġ[ K son Exception ] Ġif Ġapplicable . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġstring To Number (` val `: ĠString ): ĠNumber Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Ġ= Ġ` val ` [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Ġin Ġ' 0 ' .. ' 9 ' Ġ|| Ġinitial Ġ== Ġ'-') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdecimal Ġrepresentation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Decimal Not ation (` val ` )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġquick Ġdirty Ġway Ġto Ġsee Ġif Ġwe Ġneed Ġa ĠBigDecimal Ġinstead Ġof Ġa ĠDouble ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġonly Ġhandles Ġsome Ġcases Ġof Ġoverflow Ġor Ġunder flow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` val `. length Ġ> Ġ 1 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal (` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġjava . lang . Double . valueOf (` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( d . isIn finite () Ġ|| Ġd . isNaN ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġcan 't Ġparse Ġit Ġas Ġa Ġdouble , Ġgo Ġup Ġto ĠBigDecimal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġprobably Ġdue Ġto Ġunder flow Ġlike Ġ 4 . 3 2 e - 6 7 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġor Ġoverflow Ġlike Ġ 4 . 6 5 e 5 3 2 4 . ĠThe Ġsize Ġof Ġthe Ġstring Ġis Ġsmall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbut Ġcan 't Ġbe Ġheld Ġin Ġa ĠDouble . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal (` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinteger Ġrepresentation . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġwill Ġnarrow Ġany Ġvalues Ġto Ġthe Ġsmallest Ġreasonable ĠObject Ġrepresentation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( Integer , ĠLong , Ġor ĠBigInteger ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstring Ġversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġcompare Ġstring Ġlength Ġmethod Ġreduces ĠGC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbut Ġleads Ġto Ġsmaller Ġintegers Ġbeing Ġplaced Ġin Ġlarger Ġwrappers Ġeven Ġthough Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneeded . Ġi . e . Ġ 1 , 0 0 0 , 0 0 0 , 0 0 0 Ġ-> ĠLong Ġeven Ġthough Ġit 's Ġan ĠInteger ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 , 0 0 0 , 0 0 0 , 0 0 0 , 0 0 0 , 0 0 0 , 0 0 0 Ġ-> ĠBigInteger Ġeven Ġthough Ġit 's Ġa ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if ( val . length () <= 9 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġreturn ĠInteger . valueOf ( val ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// if ( val . length () <= 1 8 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġreturn ĠLong . valueOf ( val ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ//} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// return Ġnew ĠBigInteger ( val ); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBigInteger Ġversion : ĠWe Ġuse Ġa Ġsimilar Ġbit Length Ġcompare Ġas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBigInteger # intValue Exact Ġuses . ĠIn creases ĠGC , Ġbut Ġobjects Ġhold ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġwhat Ġthey Ġneed . Ġi . e . ĠLess Ġruntime Ġoverhead Ġif Ġthe Ġvalue Ġis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlong Ġli ved . ĠWhich Ġis Ġthe Ġbetter Ġtrade off ? ĠThis Ġis Ġcloser Ġto Ġwhat 's ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġstring To Value . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbi Ġ= ĠBigInteger (` val `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bi . bit Length () Ġ<= Ġ 3 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . valueOf ( bi . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( bi . bit Length () Ġ<= Ġ 6 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava . lang . Long . valueOf ( bi . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġbi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNumber FormatException (" val Ġ[$ ` val `] Ġis Ġnot Ġa Ġvalid Ġnumber .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTry Ġto Ġconvert Ġa Ġstring Ġinto Ġa Ġnumber , Ġboolean , Ġor Ġnull . ĠIf Ġthe Ġstring Ġcan 't Ġbe Ġconverted , ĊĠĠĠĠĠĠĠĠ Ġ* Ġreturn Ġthe Ġstring . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstring ĠA ĠString . Ġcan Ġnot Ġbe Ġnull . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġsimple ĠJSON Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠChanges Ġto Ġthis Ġmethod Ġmust Ġbe Ġcopied Ġto Ġthe Ġcorresponding Ġmethod Ġin ĊĠĠĠĠĠĠĠ Ġ// Ġthe ĠXML Ġclass Ġto Ġkeep Ġfull Ġsupport Ġfor ĠAndroid ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġstring To Value ( string : ĠString ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "" Ġ== Ġstring ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck ĠJSON Ġkey Ġwords Ġtrue / false / null ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" true ". equals ( string , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Boolean . TRUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" false ". equals ( string , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjava . lang . Boolean . FALSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(" null ". equals ( string , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNULL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġit Ġmight Ġbe Ġa Ġnumber , Ġtry Ġconverting Ġit . ĠIf Ġa Ġnumber Ġcannot Ġbe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġproduced , Ġthen Ġthe Ġvalue Ġwill Ġjust Ġbe Ġa Ġstring . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Ġ= Ġstring [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Ġin Ġ' 0 ' .. ' 9 ' Ġ|| Ġinitial Ġ== Ġ'-') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġwant Ġfull ĠBig ĠNumber Ġsupport Ġthe Ġcontents Ġof Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ` try ` Ġblock Ġcan Ġbe Ġreplaced Ġwith : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturn Ġstring To Number ( string ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Decimal Not ation ( string )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġjava . lang . Double . valueOf ( string ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! d . isIn finite () Ġ&& Ġ! d . isNaN ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Long Ġ= Ġjava . lang . Long . valueOf ( string ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( string Ġ== Ġmy Long . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( my Long . to Long () Ġ== Ġmy Long . toInt (). to Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . valueOf ( my Long . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġmy Long ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstring ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThrow Ġan Ġexception Ġif Ġthe Ġobject Ġis Ġa ĠNaN Ġor Ġinfinite Ġnumber . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġo ĠThe Ġobject Ġto Ġtest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws ĠK son Exception ĠIf Ġo Ġis Ġa Ġnon - finite Ġnumber . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġtest Validity ( o : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( o ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o . isIn finite () Ġ|| Ġo . isNaN ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK son Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JSON Ġdoes Ġnot Ġallow Ġnon - finite Ġnumbers ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o . isIn finite () Ġ|| Ġo . isNaN ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠK son Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JSON Ġdoes Ġnot Ġallow Ġnon - finite Ġnumbers ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġwrite Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter : ĠWriter , Ġvalue : ĠAny ?, Ġindent Factor : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindent : ĠInt , ĊĠĠĠĠĠĠĠ Ġ): ĠWriter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (" null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠK son String Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( value . toJson ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠNumber Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġall ĠNumbers Ġmay Ġmatch Ġactual ĠJSON ĠNumbers . Ġi . e . Ġfr actions Ġor ĠIm ag inary ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnumber AsString Ġ= Ġnumber ToString ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( NUMBER _ PATTERN . matcher ( number AsString ). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( number AsString ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠNumber Ġvalue Ġis Ġnot Ġa Ġvalid ĠJSON Ġnumber . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInstead Ġwe Ġwill Ġquote Ġit Ġas Ġa Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote ( number AsString , Ġwriter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠBoolean Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( value . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠEnum < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( quote ( value . name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠK son Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . write ( writer , Ġindent Factor , Ġindent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠK son Array Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . write ( writer , Ġindent Factor , Ġindent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠCollection < *> Ġ|| Ġvalue :: class . java . isArray Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠMap < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK son Array ( value ). write ( writer , Ġindent Factor , Ġindent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġis ĠString Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote ( value , Ġwriter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( wrap ( value ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwriter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġindent ( writer : ĠWriter , Ġindent : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġindent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write (' Ġ'. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġnew ĠJSON Exception Ġin Ġa Ġcommon Ġformat Ġfor Ġincorrect Ġconversions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠĠĠĠĠĠ Ġname Ġof Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠJSON Exception Ġthat Ġcan Ġbe Ġthrown . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwrong Value FormatException ( key : ĠString ): ĠK son Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠK son Exception (" K son [" Ġ+ Ġquote ( key ) Ġ+ Ġ"] Ġis Ġnot Ġa Ġvalid ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġ[ K son Exception ] Ġin Ġa Ġcommon Ġformat Ġfor Ġincorrect Ġconversions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey Ġname Ġof Ġthe Ġkey ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue Type Ġthe Ġtype Ġof Ġvalue Ġbeing Ġco er ced Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠJSON Exception Ġthat Ġcan Ġbe Ġthrown . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwrong Value FormatException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Type : ĠString , ĊĠĠĠĠĠĠĠ Ġ): ĠK son Exception Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠK son Exception (" K son [" Ġ+ Ġquote ( key ) Ġ+ Ġ"] Ġis Ġnot Ġa Ġ" Ġ+ Ġvalue Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ NULL ] Ġis Ġequivalent Ġto Ġthe Ġvalue Ġthat ĠJavaScript Ġcalls Ġnull , Ġwh il st ĠJava 's Ċ Ġ* Ġnull Ġis Ġequivalent Ġto Ġthe Ġvalue Ġthat ĠJavaScript Ġcalls Ġundefined . Ċ Ġ*/ Ċ object ĠNULL Ġ: ĠClone able Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThere Ġis Ġonly Ġintended Ġto Ġbe Ġa Ġsingle Ġinstance Ġof Ġthe ĠNULL Ġobject , Ġso Ġthe Ġclone Ġmethod ĊĠĠĠĠ Ġ* Ġreturns Ġitself . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠNULL . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġclone (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA ĠNull Ġobject Ġis Ġequal Ġto Ġthe Ġnull Ġvalue Ġand Ġto Ġitself . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother ĠAn Ġobject Ġto Ġtest Ġfor Ġnull ness . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġobject Ġparameter Ġis Ġthe ĠK son . NULL Ġobject Ġor Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġ== Ġnull Ġ|| Ġother Ġ=== Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA ĠNull Ġobject Ġis Ġequal Ġto Ġthe Ġnull Ġvalue Ġand Ġto Ġitself . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġalways Ġreturns Ġ 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ" null " Ġstring Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġstring Ġ" null " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" null " ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠWrap Ġan Ġobject , Ġif Ġnecessary . ĠIf Ġthe Ġobject Ġis Ġ` null `, Ġreturn Ġthe ĠNULL Ġobject . ĠIf Ġit Ċ Ġ* Ġis Ġan Ġarray Ġor Ġcollection , Ġwrap Ġit Ġin Ġa Ġ[ K son Array ]. ĠIf Ġit Ġis Ġa Ġmap , Ġwrap Ġit Ġin Ġa Ċ Ġ* Ġ[ K son ]. ĠIf Ġit Ġis Ġa Ġstandard Ġproperty Ġ( Double , ĠString , Ġet Ġal ) Ġthen Ġit Ġis Ġalready Ċ Ġ* Ġwrapped . ĠOtherwise , Ġif Ġit Ġcomes Ġfrom Ġone Ġof Ġthe Ġjava Ġpackages , Ġturn Ġit Ġinto Ġa Ġstring . ĠAnd Ġif Ġit Ċ Ġ* Ġdoesn 't , Ġtry Ġto Ġwrap Ġit Ġin Ġa Ġ[ K son ]. ĠIf Ġthe Ġwrapping Ġfails , Ġthen Ġnull Ġis Ċ Ġ* Ġreturned . Ċ Ġ* Ċ Ġ* Ġ@ param Ġany ĠThe Ġobject Ġto Ġwrap Ċ Ġ* Ġ@ return ĠThe Ġwrapped Ġvalue Ċ Ġ*/ Ċ fun Ġwrap ( any : ĠAny ?): ĠAny Ġ{ ĊĠĠĠ Ġif Ġ( any Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNULL ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( any Ġis ĠK son Ġ|| Ġany Ġis ĠK son Array ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠNULL Ġ|| Ġany Ġis ĠK son String ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠByte Ġ|| Ġany Ġis ĠChar ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠShort Ġ|| Ġany Ġis ĠInt ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠLong Ġ|| Ġany Ġis ĠBoolean ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠFloat Ġ|| Ġany Ġis ĠDouble ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠString Ġ|| Ġany Ġis ĠBigInteger ĊĠĠĠĠĠĠĠ Ġ|| Ġany Ġis ĠBigDecimal Ġ|| Ġany Ġis ĠEnum < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġany ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( any Ġis ĠCollection <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK son Array ( any ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( any . java Class . isArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK son Array ( any ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( any Ġis ĠMap < *, Ġ* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK son ( any ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġobject Package Ġ= Ġany . java Class . get Package () ĊĠĠĠ Ġval Ġobject PackageName Ġ= Ġif Ġ( object Package Ġ!= Ġnull ) Ġobject Package ĊĠĠĠĠĠĠĠ Ġ. name Ġelse Ġ"" ĊĠĠĠ Ġreturn Ġif Ġ( object PackageName . startsWith (" java .") ĊĠĠĠĠĠĠĠ Ġ|| Ġobject PackageName . startsWith (" javax .") ĊĠĠĠĠĠĠĠ Ġ|| Ġobject PackageName . startsWith (" kotlin .") ĊĠĠĠĠĠĠĠ Ġ|| Ġobject PackageName . startsWith (" kotlin x .") ĊĠĠĠĠĠĠĠ Ġ|| Ġany . java Class . class Loader Ġ== Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġany . toString () ĊĠĠĠ Ġ} Ġelse ĠK son ( any ) Ċ } Ċ