@ file : ĠSup press ( Warnings . NOTH ING _ TO _ INLINE ) Ċ Ċ package Ġru . spb stu . wheel s Ċ Ċ import Ġkotlinx . warnings . Warnings Ċ Ċ /* Ċ * ĠEss entially , Ġyour Ġgood Ġol ' Ġarray Ġas Ġyou Ġknow Ġit , Ġbut ĠT Ġis Ġnot Ġre ified . Ċ * ĠIs Ġneeded Ġto Ġavoid Ġdealing Ġwith ĠArray < Any ?> Ġwhen Ġimplementing Ġarray - based Ġdata Ġstructures . Ċ * Ġ*/ Ċ @ Suppress ( Warnings . UN CHECK ED _ CAST , ĠWarning s . NOTH ING _ TO _ INLINE ) Ċ inline Ġclass ĠOption Array < T > Ċ @ Deprecated ( message Ġ= Ġ" Do Ġnot Ġuse ") Ċ @ Published Api Ċ internal Ġconstructor (@ Published Api Ġinternal Ġval Ġinner : ĠArray < Any ?> ) Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġconstructor ( size : ĠInt ) Ġ: Ġthis ( Array < Any ? >( size ) Ġ{ ĠOption . NO VALUE Ġ}) Ċ Ċ // ĠĠĠ Ġ@ Suppress (" DE PREC ATION ") Ċ // ĠĠĠ Ġconstructor ( size : ĠInt , Ġinit : Ġ( Int ) Ġ-> ĠT ) Ġ: Ġthis ( Array < Any ? >( size , Ġinit )) ĊĊĠĠĠ Ġinline Ġoperator Ġfun Ġget ( index : ĠInt ): ĠOption < T > Ġ= ĠOption ( inner [ index ]) ĊĠĠĠ Ġinline Ġoperator Ġfun Ġset ( index : ĠInt , Ġvalue : ĠOption < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġinner [ index ] Ġ= Ġvalue . unsafe Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġval Ġsize : ĠInt Ġget () Ġ= Ġinner . size ĊĊĠĠĠ Ġ// Ġdanger : Ġbox ing ! ĊĠĠĠ Ġinline Ġoperator Ġfun Ġiterator (): ĠIterator < Option < T >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġyield ( get ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( size Ġ== Ġ 0 ) Ġreturn Ġ" []" ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ("[ ") ĊĠĠĠĠĠĠĠ Ġsb . append ( get ( 0 )) ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 Ġuntil Ġsize ) Ġsb . append (", Ġ"). append ( get ( i )) ĊĠĠĠĠĠĠĠ Ġsb . append (" ]") ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ sb " ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< T > ĠOption Array ( size : ĠInt , Ġinit : Ġ( Int ) Ġ-> ĠOption < T >): ĠOption Array < T > Ġ{ ĊĠĠĠ Ġval Ġres Ġ= ĠOption Array < T >( size ) ĊĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġres [ i ] Ġ= Ġinit ( i ) ĊĠĠĠ Ġreturn Ġres Ċ } Ċ Ċ inline Ġfun Ġ< T > ĠOption Array < out ĠT >. copy Into ( destination : ĠOption Array < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdestination Offset : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartIndex : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Index : ĠInt Ġ= Ġsize ) Ġ{ ĊĠĠĠ Ġinner . copy Into ( destination . inner , Ġdestination Offset , ĠstartIndex , Ġend Index ) Ċ } Ċ Ċ @ Suppress ( Warnings . DE PREC ATION ) Ċ inline Ġfun Ġ< T > ĠOption Array < out ĠT >. copyOf (): ĠOption Array < T > Ġ= ĠOption Array ( inner . copyOf ()) Ċ Ċ @ Suppress ( Warnings . DE PREC ATION ) Ċ inline Ġfun Ġ< T > ĠOption Array < out ĠT >. copyOf ( new Size : ĠInt ): ĠOption Array < T > Ġ= ĠOption Array ( inner . copyOf ( new Size )) Ċ Ċ @ Suppress ( Warnings . DE PREC ATION ) Ċ inline Ġfun Ġ< T > ĠOption Array < out ĠT >. copyOf Range ( from Index : ĠInt , Ġto Index : ĠInt ): ĠOption Array < T > Ġ= ĊĠĠĠĠĠĠĠ ĠOption Array ( inner . copyOf Range ( from Index , Ġto Index )) Ċ Ċ inline Ġfun Ġ< T > ĠOption Array < T >. fill ( element : ĠT , Ġfrom Index : ĠInt Ġ= Ġ 0 , Ġto Index : ĠInt Ġ= Ġsize ) Ġ{ ĊĠĠĠ Ġinner . fill ( element , Ġfrom Index , Ġto Index ) Ċ } Ċ Ċ inline Ġfun Ġ< A , ĠB > ĠOption Array < out ĠA >. map Values ( body : Ġ( A ) Ġ-> ĠB ): ĠOption Array < B > Ġ{ ĊĠĠĠ Ġ@ Suppress ( Warnings . DE PREC ATION ) ĊĠĠĠ Ġval Ġres Ġ= ĠOption Array < B >( inner . copyOf ()) ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) ĊĠĠĠĠĠĠĠ Ġif ( this [ i ]. isNotEmpty ()) Ġres . inner [ i ] Ġ= Ġbody ( this [ i ]. get ()) ĊĠĠĠ Ġreturn Ġres Ċ } Ċ