Let run with, also apply. Filter takeIf

As Kotlin is designed with “Effective Java” in mind, nullable collections should not be used:

Item 43: Return empty arrays or collections, not nulls

This is how it works in most functional languages. As both collection and Optional are monads, they share the same set of methods. Kotlin’s fake Optional is great for Java integration, but not consistent with the monadic interface.

If I had a case like the one you described, I would call the second collection optionalCollection.