Why does Kotlin prohibit exposing restricted-visibility types?

Roman, it might seem little off topic but, what do you think about the idea to allow internal and protected members of the interface through the same mechanism you suggest in 22396 issue.
It’s explained in this issue and this topic.

For example, some framework can define the interface as below:

interface EventListener {
	@PublishedApi protected fun onEvent(e: Event)
	@PublishedApi internal fun fireEvent(e: Event) { onEvent(e)}
}

And a developer can implement it like so:

class UiController : EventListener {
	override fun onEvent(e: Event) { TODO("some implementation")}
	...
}

Now the framework can call fireEvent method on UiController instance. Which will in its turn call onEvent.
An advantage of this usage is that wherever the UiController is exposed its onEvent method is inaccessible. As the result, we have more strong encapsulation.