Why does Kotlin prohibit exposing restricted-visibility types?

I think this question is roughly the same as: