package Ġnet . a quad c . persistence . tokens Ċ Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġnet . a quad c . collections . Inline Enum Set Ċ import Ġnet . a quad c . collections . contains Ċ import Ġnet . a quad c . collections . plus Ċ import Ġnet . a quad c . persistence . Closeable Iterator Ċ import Ġnet . a quad c . persistence . from Base 6 4 Ċ import Ġnet . a quad c . persistence . has Fraction Ċ import Ġnet . a quad c . persistence . to Base 6 4 Ċ import Ġjava . io . Closeable Ċ Ċ /** Ċ Ġ* ĠToken Ġtype Ġin Ġabstract Ġserialization Ġprotocol . Ċ Ġ*/ Ċ enum Ġclass ĠToken ( internal Ġval Ġdelta : ĠInt ) Ġ{ ĊĠĠĠ ĠNull ( 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġco erce ( value : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġnull Ġelse Ġthrow ĠIllegalArgumentException (" expected Ġ$ Null Ġbut Ġwas Ġ$ value ") ĊĠĠĠ Ġ}, ĊĠĠĠ ĠBool ( 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġco erce ( value : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġis ĠBoolean ) Ġvalue Ġelse Ġthrow ĠIllegalArgumentException (" expected Ġ$ Bool Ġbut Ġwas Ġ$ value ") ĊĠĠĠ Ġ}, ĊĠĠĠ ĠI 3 2 ( 0 ), ĠI 6 4 ( 0 ), ĊĠĠĠ ĠF 3 2 ( 0 ), ĠF 6 4 ( 0 ), ĊĠĠĠ ĠStr ( 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġco erce ( value : ĠAny ?): ĠAny ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean , Ġis ĠNumber Ġ-> Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharSequence Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġto Base 6 4 ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ Str ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠBlob ( 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġco erce ( value : ĠAny ?): ĠAny ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharSequence Ġ-> Ġfrom Base 6 4 ( value . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠBegin Sequence (+ 1 ), ĠEnd Sequence (- 1 ), ĊĠĠĠ ĠBegin Dictionary (+ 1 ), ĠEnd Dictionary (- 1 ), ĊĠĠĠ Ġ; ĊĊĠĠĠ Ġopen Ġfun Ġco erce ( value : ĠAny ?): ĠAny ? Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin ĠNumbers Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByte Ġ-> Ġco erce To Number ( value . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠShort Ġ-> Ġco erce To Number ( value . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> Ġco erce To Number ( value . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> Ġco erce To Number ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 3 2 Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 6 4 Ġ-> Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 3 2 Ġ-> Ġvalue . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 6 4 Ġ-> Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharSequence Ġ-> Ġvalue . toString (). let Ġ{ Ġvalue Ġ-> Ġ// Ġto < Number > Ġare Ġextensions Ġon ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Fraction ( value )) Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 3 2 Ġ-> Ġvalue . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF 6 4 Ġ-> Ġvalue . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") Ġ// Ġnever Ġco erce Ġfraction als Ġto Ġints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġco erce To Number ( value . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġin ĠControl Tokens Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġthis ) Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠAssertionError () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġco erce To Number ( value : ĠLong ): ĠAny Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis Ġ== ĠI 3 2 Ġ&& Ġvalue Ġin ĠInt . MIN _ VALUE .. Int . MAX _ VALUE Ġ-> Ġvalue . toInt () ĊĠĠĠĠĠĠĠ Ġthis Ġ== ĠI 6 4 Ġ-> Ġvalue ĊĠĠĠĠĠĠĠ Ġthis Ġ== ĠF 3 2 Ġ-> Ġvalue . toFloat () ĊĠĠĠĠĠĠĠ Ġthis Ġ== ĠF 6 4 Ġ-> Ġvalue . toDouble () ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" value Ġ$ value Ġcannot Ġbe Ġco er ced Ġto Ġ$ this ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" IN AP PL IC ABLE _ JVM _ FIELD ") ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġw ann abe Ġconst Ġbut Ġhttps :// yout rack . jetbrains . com / issue / KT - 2 5 9 1 5 ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠIn te gers : ĠInline Enum Set < Token > Ġ= ĠI 3 2 Ġ+ ĠI 6 4 ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠFloat s : ĠInline Enum Set < Token > Ġ= ĠF 3 2 Ġ+ ĠF 6 4 ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠNumbers : ĠInline Enum Set < Token > Ġ= ĠIn te gers Ġ+ ĠFloat s ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠControl Tokens : ĠInline Enum Set < Token > Ġ= ĠBegin Sequence Ġ+ ĠEnd Sequence Ġ+ ĠBegin Dictionary Ġ+ ĠEnd Dictionary ĊĊĠĠĠĠĠĠĠ Ġfun Ġof Value ( value : ĠAny ?): ĠToken ? Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠNull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Ġ-> ĠBool ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Ġ-> ĠI 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLong Ġ-> ĠI 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFloat Ġ-> ĠF 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Ġ-> ĠF 6 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharSequence Ġ-> ĠStr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠByteArray Ġ-> ĠBlob ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠToken Ġ-> Ġif Ġ( value Ġin ĠControl Tokens ) Ġvalue Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠToken ?. coerce ( value : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġvalue Ġelse Ġco erce ( value ) Ċ Ċ /** Ċ Ġ* ĠA Ġconsum able ĠIterator / Stream / Sequence Ġof Ġtokens . Ċ Ġ* ĠMust Ġconsist Ġof Ġa Ġsingle Ġvalue Ġwhich Ġcould Ġbe Ġa Ġprimitive , Ġa Ġsequence , Ġor Ġa Ġdictionary . Ċ Ġ* ĠDi ctionaries Ġare Ġeffectively Ġcollections Ġof Ġpairs , Ġe . Ġg . Ġhave Ġeven Ġnumber Ġof Ġvalues . Ċ Ġ* ĠOnly Ġprimitive Ġnames Ġ( dictionary Ġvalues Ġat Ġodd Ġpositions ) Ġare Ġsupported Ġby Ġmost Ġof Ġoperations . Ċ Ġ*/ Ċ interface ĠToken Stream Ġ: ĠClose able Iterator < Any ?> Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠN esting Ġinformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġpath : ĠList < Any ? Ġ/* Ġ= Ġname : ĠPrimitive Ġ| Ġindex : ĠIndex Ġ*/ > ĊĠĠĠ Ġ// Ġwhere ĠPrimitive Ġis Ġany Ġnumber , Ġstring , Ġor Ġblob , Ġand ĠIndex Ġis Ġa Ġspecial Ġint Ġbox ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġtype Ġof Ġnext Ġtoken Ġwithout Ġconsuming Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpeek (): ĠToken ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCons ume Ġand Ġreturn Ġthe Ġnext Ġtoken . ĊĠĠĠĠ Ġ* Ġ@ param Ġco erce To Ġexpected Ġtoken Ġtype , Ġor Ġnull Ġto Ġretrieve Ġany ĊĠĠĠĠ Ġ* Ġ@ return Ġnull | Boolean | Byte | Short | Int | Long | Float | Double | CharSequence | ByteArray | Token .( Begin | End )( Sequence | Dictionary ) ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġ** must ** Ġconform Ġthe Ġtype Ġspecified Ġby Ġ[ coerce To ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpoll ( coerce To : ĠToken ? Ġ= Ġnull ): ĠAny ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCons ume Ġand Ġreturn Ġthe Ġnext Ġtoken . ĊĠĠĠĠ Ġ* Ġ@ see Ġpoll ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoll ( null ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSkip Ġand Ġconsume Ġthe Ġnext Ġvalue . ĊĠĠĠĠ Ġ* ĠA Ġvalue Ġis Ġeither Ġa Ġ' primitive ' Ġor Ġa Ġwhole Ġbracket Ġsequence ĊĠĠĠĠ Ġ* Ġfrom Ġthe Ġ[ Token . Begin Sequence ] Ġor Ġ[ Token . Begin Dictionary ] Ġand Ġuntil ĊĠĠĠĠ Ġ* Ġ[ Token . End Sequence ] Ġor Ġ[ Token . Begin Sequence ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġskip Value () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdepth Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġpoll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Ġis ĠToken ) Ġdepth Ġ+= Ġtoken . delta ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( depth Ġ> Ġ 0 ) Ġ// Ġ` while Ġ( depth Ġ!= Ġ 0 )` Ġis Ġa Ġcause Ġof ĠGson ĠJson Reader Ġbug : Ġhttps :// github . com / google / gson / issues / 6 0 5 ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠIndex ( value : ĠInt ) Ġ{ ĊĠĠĠ Ġvar Ġvalue : ĠInt Ġ= Ġvalue ; Ġ@ Jvm Synt hetic Ġinternal Ġset ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġvalue ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġother Ġis ĠIndex Ġ&& Ġvalue Ġ== Ġother . value ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"# $ value " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠFirst Ġ= ĠIndex ( 0 ) ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠSecond Ġ= ĠIndex ( 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ċ open Ġclass ĠToken Path Ġ: ĠArrayList < Any ?> () Ġ{ ĊĠĠĠ Ġfun Ġbegin Array () Ġ{ Ġadd ( Index ( 0 )) Ġ} ĊĠĠĠ Ġfun Ġend Array () Ġ{ Ġremove At ( last Index ) Ġas ĠIndex ; Ġafter Value () Ġ} ĊĠĠĠ Ġfun Ġbegin Object () Ġ{ Ġadd ( null ) Ġ} Ġ// Ġinside Ġobject ; Ġname Ġwas Ġnot Ġread Ġyet ĊĠĠĠ Ġfun Ġend Object () Ġ{ Ġcheck ( remove At ( last Index ) Ġ! is ĠIndex ); Ġafter Value () Ġ} ĊĠĠĠ Ġfun Ġon Name ( name : ĠAny ?) Ġ{ Ġthis [ last Index ] Ġ= Ġname Ġ} ĊĠĠĠ Ġfun Ġafter Value () Ġ{ Ġ( last OrNull () Ġas ? ĠIndex )?. let Ġ{ Ġit . value ++ Ġ} Ġ} Ġ// Ġincre ments Ġindex Ġif Ġthere Ġwas Ġan Ġarray ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ('$ ') ĊĠĠĠĠĠĠĠ Ġthis @ Token Path . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ('[ ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIndex Ġ-> Ġappend ('# '). append ( it . value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCharSequence Ġ-> Ġappend (' \' ') Ġ// Ġof Ġcourse ĠI Ġknow Ġthe Ġfast Ġway Ġto Ġappend Ġwhile Ġreplacing Ġoccurrences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( it . toString (). replace ("\\ ", Ġ"\\ \ \" ). replace (" '", Ġ"\\ ' ")) Ġ// Ġof Ġseveral Ġcharacters . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (' \' ') Ġ// ĠBut Ġthere 's Ġno Ġreason Ġto Ġdo Ġso Ġin Ġnon - critical ĠtoString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġappend ( it ) Ġ// Ġmake Ġdifference Ġbetween Ġstrings Ġ( e . Ġg . Ġ`$ [' null '] `) Ġand Ġother Ġtypes Ġ(` $[ null ] `) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (' ]') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ @ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ċ class ĠName Tracing Token Path Ġ: ĠToken Path () Ġ{ ĊĠĠĠ Ġval Ġexpecting Name Ġ= ĠArrayList < Boolean ?> () ĊĊĠĠĠ Ġfun Ġskip () Ġ{ ĊĠĠĠĠĠĠĠ Ġafter Value ( null ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġafter Token ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Begin Sequence Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( expect ing Name . last OrNull () Ġ!= Ġtrue ) Ġ{ Ġ" names Ġof Ġtype Ġ'${ Token . Begin Sequence }' Ġare Ġnot Ġsupported " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpecting Name . add ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken . End Sequence Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( expect ing Name . remove At ( expect ing Name . last Index ) Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflip Expect Name () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Begin Dictionary Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( expect ing Name . last OrNull () Ġ!= Ġtrue ) Ġ{ Ġ" names Ġof Ġtype Ġ'${ Token . Begin Dictionary }' Ġare Ġnot Ġsupported " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpecting Name . add ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToken . End Dictionary Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( expect ing Name . remove At ( expect ing Name . last Index ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d angling Ġname . ĠExpected Ġa Ġvalue Ġbut Ġwas Ġ'${ Token . End Dictionary } '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflip Expect Name () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Value ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġafter Value ( value : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( expect ing Name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġen Ġ= Ġexpecting Name . last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( en Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( en ) Ġon Name ( value ) Ġelse Ġafter Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpecting Name [ expect ing Name . last Index ] Ġ= Ġ! en ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ// Ġelse Ġwe 're Ġat Ġthe Ġroot Ġelement , Ġnothing Ġto Ġdo Ġhere ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġflip Expect Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( expect ing Name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġli Ġ= Ġexpecting Name . last Index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpecting Name [ li ]?. let Ġ{ Ġexpecting Name [ li ] Ġ= Ġ! it Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear () ĊĠĠĠĠĠĠĠ Ġexpecting Name . clear () ĊĠĠĠ Ġ} Ċ Ċ } Ċ