public struct ChangeSize { public init(version: Int32) { self._version = T(version) } public var version: Int32 { get { return Int32(_version) } set { _version = T(newValue) } } #if BEFORE typealias T = Int32 #else typealias T = Int64 #endif private var _version: T } @_fixed_layout open class ChangeFieldOffsetsOfFixedLayout { public init(major: Int32, minor: Int32, patch: Int32) { self.major = ChangeSize(version: major) self.minor = ChangeSize(version: minor) self.patch = ChangeSize(version: patch) } open var major: ChangeSize open var minor: ChangeSize open var patch: ChangeSize open func getVersion() -> String { return "\(major.version).\(minor.version).\(patch.version)" } } @_fixed_layout open class ChangeSizeOfSuperclass : ChangeFieldOffsetsOfFixedLayout { public init() { self.codename = "Big Bang" super.init(major: 7, minor: 0, patch: 0) } open var codename: String open override func getVersion() -> String { return "\(super.getVersion()) (\(codename))"; } }