public struct Outer { @propertyWrapper public struct InnerWrapper { public var wrappedValue: T public /*init:def*/init(initialValue: T) { self.wrappedValue = initialValue } public /*body:def*/init(first: Int, body: () -> T) { self.wrappedValue = body() } } } var globalInt: Int { return 17 } public struct HasWrappers { @Outer.InnerWrapper public var x: Int = globalInt @Outer . /*body:call*/InnerWrapper(first: 20, body: { globalInt }) public var y: Int @Outer . /*body:call*/InnerWrapper(first: 10, body: { struct Inner { @Outer . /*init:call*/InnerWrapper(initialValue: globalInt) var x: Int } return Inner().x + globalInt }) public var z: Int } func uses() { _ = Outer . /*body:call*/InnerWrapper(first: 42, body: { 45 }) _ = Outer . /*init:call*/InnerWrapper(initialValue: 0) }