package Ġarithmetic . coding . lib Ċ Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . lang . IllegalStateException Ċ Ċ import Ġkotlin . math . min Ċ Ċ class ĠChunk Iterator ( private Ġval Ġdata : ĠCharSequence , Ġprivate Ġval Ġchunk Size : ĠInt ) Ġ: ĠIterator < CharSequence > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġindex Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( chunk Size Ġ< Ġ 0 Ġ|| Ġdata . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Ġ< Ġdata . length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException () ĊĊĠĠĠĠĠĠĠ Ġval Ġchunk Ġ= Ġdata . slice ( index Ġuntil Ġmin ( index Ġ+ Ġchunk Size , Ġdata . length )) ĊĊĠĠĠĠĠĠĠ Ġindex Ġ+= Ġchunk Size ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchunk ĊĠĠĠ Ġ} Ċ }