Then, I believe the option 1 is a way to go. I watched the talk by @cbeams and discussed that challenge with @udalov recently, we thought about options like annotating a functional parameter or the functional parameter's type to indicate it's extension. But if it's every method that takes that type should expose it as extension function, then it seems more appropriate to annotate that functional type.