package expo.modules.devlauncher.compose.utils data class ValueWithIsLast( val value: T, val isLast: Boolean ) class DecoratedIterator( iterable: Iterable, private val dataDecorator: (T) -> U ) : Iterator { private val iterator = iterable.iterator() override fun hasNext(): Boolean = iterator.hasNext() override fun next(): U = dataDecorator(iterator.next()) } class DecoratedIterable( private val iterable: Iterable, private val dataDecorator: (T) -> U ) : Iterable { override fun iterator(): Iterator = DecoratedIterator(iterable, dataDecorator) } fun Collection.withIsLast(): Iterable> { val lastIndex = size - 1 return DecoratedIterable, ValueWithIsLast>(withIndex()) { it -> ValueWithIsLast( value = it.value, isLast = it.index == lastIndex ) } }