package Ġgro ost av . kotlin x . exec Ċ Ċ internal Ġclass ĠCircular Array < T : ĠAny ? >( val Ġcapacity : ĠInt ): ĠAbstract List < T >() Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġvar Ġelements : ĠArray < T > Ġ= ĠarrayOf Null s < Any >( capacity ) Ġas ĠArray < T > ĊĊĠĠĠ Ġprivate Ġvar Ġhead Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġvar Ġsize : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠT Ġ= Ġelements [( index Ġ+ Ġhead ) Ġ% Ġcapacity ] ĊĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( next : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelements [( head Ġ+ Ġsize ) Ġ% Ġcapacity ] Ġ= Ġnext ĊĠĠĠĠĠĠĠ Ġif ( size Ġ< Ġcapacity ) Ġsize Ġ+= Ġ 1 Ġelse Ġhead Ġ+= Ġ 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( elements : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġelements . take Last ( capacity ). forEach Ġ{ Ġthis Ġ+= Ġit Ġ} ĊĠĠĠ Ġ} Ċ }