Returns the last element that satisfies the given predicate [test].
Returns the last element that satisfies the given predicate [test].
An iterable that can access its elements directly may check its
elements in any order (for example a list starts by checking the
last element and then moves towards the start of the list).
The default implementation iterates elements in iteration order,
checks test(element)
for each,
and finally returns that last one that matched.
If no element satsfies [test], the result of invoking the [orElse] function is returned. If [orElse] is omitted, it defaults to throwing a [StateError].