#if BEFORE var global: Int = 0 public struct ChangeEmptyToNonEmpty { public init() {} public var property: Int { get { return global } set { global = newValue } } } #else public struct ChangeEmptyToNonEmpty { public init() { property = 0 } public var property: Int } #endif #if BEFORE public struct ChangeSize { public init() { count = 0 } public var count: Int public func validate() -> Bool { return true } } #else public struct ChangeSize { public init() { _count = 0 _sign = 0 } public var count: Int { get { return _count * _sign } set { if newValue < 0 { _count = -newValue _sign = -1 } else { _count = newValue _sign = 1 } } } private var _count: Int private var _sign: Int public func validate() -> Bool { return (padding1 == 17 && padding2 == -12 && padding3 == 108 && padding4 == -7592) } // Some padding to grow the struct beyond what a fixed-size buffer // can hold for a global. Use it as a canary to catch any memory // corruption issues. public var padding1: Int = 17 public var padding2: Int = -12 public var padding3: Int = 108 public var padding4: Int = -7592 } #endif