package Ġcom . github . wh yr ising . y . collections . con cret ions . list Ċ Ċ import Ġcom . github . wh yr ising . y . collections . core . Inst a Count Ċ import Ġcom . github . wh yr ising . y . collections . core . to P list Ċ import Ġcom . github . wh yr ising . y . collections . list . IP ers istent List Ċ import Ġcom . github . wh yr ising . y . collections . seq . IP ers istent Collection Ċ import Ġcom . github . wh yr ising . y . collections . seq . I Seq Ċ import Ġcom . github . wh yr ising . y . collections . stack . IP ers istent Stack Ċ import Ġcom . github . wh yr ising . y . collections . util . M urm ur 3 Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . builtins . List Serializer Ċ import Ġkotlinx . serialization . descriptors . Serial Descriptor Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ Ċ internal Ġclass ĠPersistent List Serializer < E >( element : ĠK Serializer < E >) Ġ: ĊĠĠĠ ĠK Serializer < Persistent List < E >> Ġ{ ĊĊĠĠĠ Ġinternal Ġval Ġlist Serializer Ġ= ĠList Serializer ( element ) ĊĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= Ġlist Serializer . descriptor ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠPersistent List < E > Ġ= ĊĠĠĠĠĠĠĠ Ġlist Serializer . deserialize ( decoder ). to P list () ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠPersistent List < E >) Ġ= ĊĠĠĠĠĠĠĠ Ġlist Serializer . serialize ( encoder , Ġvalue ) Ċ } Ċ Ċ @ Serializable ( with Ġ= ĠPersistent List Serializer :: class ) Ċ sealed Ġclass ĠPersistent List < out ĠE > Ġ: ĠA Seq < E >(), ĠIP ers istent List < E >, ĠInst a Count Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġconj ( e : Ġ@ Unsafe Variance ĠE ): ĠPersistent List < E > Ġ= ĠCons ( e , Ġthis ) ĊĊĠĠĠ Ġoverride Ġfun Ġcons ( e : Ġ@ Unsafe Variance ĠE ): ĠI Seq < E > Ġ= ĠCons ( e , Ġthis ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġinternal Ġclass ĠCons < out ĠE >( ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġfirst : ĠE , ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġrest : ĠIP ers istent List < E > ĊĠĠĠ Ġ) Ġ: ĠPersistent List < E >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfirst (): ĠE Ġ= Ġfirst ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠI Seq < E >? Ġ= Ġwhen Ġ( count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġrest Ġas ĠI Seq < E >? ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcount : ĠInt Ġ= Ġrest . count Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠIP ers istent Collection < E > Ġ= ĠEmpty ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpeek (): ĠE Ġ= Ġfirst ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpop (): ĠIP ers istent Stack < E > Ġ= Ġrest ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġabstract Ġclass ĠA Empty < out ĠE > Ġ: ĠPersistent List < E >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" ()" ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas he q (): ĠInt Ġ= ĠHASH _ EQ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfirst (): ĠE Ġ= Ġthrow ĠNoSuch ElementException ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Calling Ġfirst () Ġon Ġempty ĠPersistent List ." ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrest (): ĠI Seq < E > Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠI Seq < E >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcount : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠA Empty < E > Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġe quiv ( other : ĠAny ?): ĠBoolean Ġ= Ġequals ( other ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpeek (): ĠE ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpop (): ĠIP ers istent Stack < E > Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġ// ĠList Ġimplementation ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġsize : ĠInt Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠ Ġfun Ġcontains All ( elements : ĠCollection < @ Unsafe Variance ĠE >): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . isEmpty () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠE Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException (" Can 't Ġcall Ġget Ġon Ġan Ġempty Ġlist ") ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < E > Ġ= Ġobject Ġ: ĠIterator < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠE Ġ= Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlist Iterator (): ĠList Iterator < E > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < E >(). list Iterator () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlist Iterator ( index : ĠInt ): ĠList Iterator < E > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < E >(). list Iterator ( index ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsub List ( from Index : ĠInt , Ġto Index : ĠInt ): ĠList < E > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < E >(). sub List ( from Index , Ġto Index ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontains ( element : Ġ@ Unsafe Variance ĠE ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠindexOf ( element : Ġ@ Unsafe Variance ĠE ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġlast IndexOf ( element : Ġ@ Unsafe Variance ĠE ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠHASH _ EQ Ġ= ĠM urm ur 3 . hash Ordered ( emptyList < Nothing >()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġobject ĠEmpty Ġ: ĠA Empty < Nothing >() ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġoperator Ġfun Ġ< E > Ġinvoke (): ĠPersistent List < E > Ġ= ĠEmpty ĊĊĠĠĠĠĠĠĠ Ġinternal Ġoperator Ġfun Ġ< E > Ġinvoke ( var arg Ġargs : ĠE ): ĠPersistent List < E > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . fold Right ( Empty ) Ġ{ Ġe : ĠE , Ġacc : ĠIP ers istent List < E > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCons ( e , Ġacc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġ< E > Ġcreate ( list : ĠList < E >): ĠPersistent List < E > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Iterator Ġ= Ġlist . list Iterator ( list . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl : ĠPersistent List < E > Ġ= ĠEmpty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( list Iterator . has Previous ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ= Ġl . conj ( list Iterator . previous ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġl ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ