# io.github.libtmux.kotlin.Iterable.filter

- **Module:** io.github.libtmux.kotlin.Iterable
- **Package:** io.github.libtmux:libtmux-kotlin
- **Language:** Kotlin
- **Kind:** function
- **Source:** https://github.com/libtmux/libtmux-java/blob/f56392b5d9bc7f1f9c1631842333fb90f3d82d40/libtmux-kotlin/src/main/kotlin/io/github/libtmux/kotlin/Filters.kt#L38
- **Page:** https://libtmux.org/en/kotlin/latest/reference/io-github-libtmux-kotlin-iterable-filter/

```
public fun <T : Any> Iterable<T>.filter(expression: FilterExpr<T>): List<T>

public fun Iterable<Session>.filter(expression: FilterExpr<JavaSession>): List<Session>

public fun Iterable<Window>.filter(expression: FilterExpr<JavaWindow>): List<Window>

public fun Iterable<Pane>.filter(expression: FilterExpr<JavaPane>): List<Pane>

public fun Iterable<Client>.filter(expression: FilterExpr<JavaClient>): List<Client>
```

Selects the elements an expression matches.

Kotlin's own `filter` takes a function, not a [java.util.function.Predicate], so handing it a
[FilterExpr] does not compile — the one place where reading the Java documentation and writing
Kotlin part company. This is that overload, so `panes.filter(Pane_.active().isTrue())` means what
it appears to.

The list is already in hand: this asks tmux nothing.

## Parameters

- `expression` (`FilterExpr<T>`) (for `filter(expression) [overload 1]`)
- `expression` (`FilterExpr<JavaSession>`) (for `filter(expression) [overload 2]`)
- `expression` (`FilterExpr<JavaWindow>`) (for `filter(expression) [overload 3]`)
- `expression` (`FilterExpr<JavaPane>`) (for `filter(expression) [overload 4]`)
- `expression` (`FilterExpr<JavaClient>`) (for `filter(expression) [overload 5]`)
