The Stream API turned 10, and it saw a nice addition in the JDK 24: the Gatherer API. A Gatherer is an object that can model an intermediate operation, just as Collector can model a terminal operation. It brings new capabilities to the Stream API, that were not possible before. The Gatherer API is a complex API, made to solve complex problems. A Gatherer can be added to a parallel stream, even if it does not support parallelization itself. This presentation shows you how this API is working, what patterns it gives you, and what are the good use cases for it. You will hear about internal mutable states, integrators, stream interruption, combinations, and parallel streams. All these are the building blocks you need to understand to master this complex API.