@propertyWrapper struct /*wrapper:def*/Foo { public var wrappedValue: T init(initialValue: T) { wrappedValue = initialValue } init(initialValue: T, otherThing: Bool) { self.init(initialValue: initialValue) } var projectedValue: Projection { get { Projection(item: wrappedValue) } } } struct Projection { var item: T } @resultBuilder struct /*builder:def*/Other { public static func buildBlock(_ components: String...) -> String { return components.joined() } } struct Bar { @/*wrapper*/Foo var /*wrapped:def*/foo: Int = 10 @/*wrapper*/Foo(initialValue: "hello") var bar: String @/*wrapper*/Foo var jim: String = { struct Bar { @/*wrapper*/Foo var inner: String = "It's 42" } return Bar().inner }() func combined(@/*builder*/Other _ a: () -> String) -> String { return a() } @/*builder*/Other func hello() -> String { "hello" "there" } func baz() { let _: /*wrapper*/Foo = /*wrapped+1*/_foo let _: Int = /*wrapped+1*/_foo.wrappedValue let _: Int = /*wrapped*/foo let _: Projection = /*wrapped+1*/$foo let _: /*wrapper*/Foo = _bar } }