private struct Private { init(_ t: T) { p = t } var p : T } public struct Public { init(_ t: T) { p = Private(t) } private var p: Private }