This is an accidental duplicate of Why can non-internal packages expose internals?. Please discuss at the other topic.