The use of a reducer that adds all of the elements that it consumes to a list is the primary way in which this occurs - if instead, we produce a filtered iterable, or a collection of filtered iterables, we can lazily iterate over all of the contained elements without having to buffer all of the elements.
For an example of where this occurs, see Concatenate in FlinkBatchPortablePipelineTranslator.
Imported from Jira BEAM-4228. Original Jira may contain additional context.
Reported by: tgroh.