---
title: "forEachChangeReversed"
description: "Iterates over all the changes in this [ChangeList] in reverse order.

Changes are iterated by index, so [block] should not perform any new changes before the current
one or changes may be skipped. [block] may make non-overlapping changes after the current one
safely, such changes will not be visited."
type: "function"
---

<div class='type'>Function</div>


<a id='references'></a>
<div class='sourceset sourceset-common'>Common</div>


```kotlin
@ExperimentalFoundationApi
inline fun ChangeList.forEachChangeReversed(
    block: (range: TextRange, originalRange: TextRange) -> Unit
)
```


Iterates over all the changes in this `ChangeList` in reverse order.

Changes are iterated by index, so `block` should not perform any new changes before the current
one or changes may be skipped. `block` may make non-overlapping changes after the current one
safely, such changes will not be visited.



## Code Examples
### BasicTextFieldChangeReverseIterationSample
```kotlin
@Composable
fun BasicTextFieldChangeReverseIterationSample() {
    // Make a text field behave in "insert mode" – inserted text overwrites the text ahead of it
    // instead of being inserted.
    BasicTextField(
        state = rememberTextFieldState(),
        inputTransformation = {
            changes.forEachChangeReversed { range, originalRange ->
                if (!range.collapsed && originalRange.collapsed) {
                    // New text was inserted, delete the text ahead of it.
                    delete(
                        range.end.coerceAtMost(length),
                        (range.end + range.length).coerceAtMost(length),
                    )
                }
            }
        },
    )
}
```

