public protocol Observable {} public protocol Observer { associatedtype Subject: Observable } public struct ObservationRegistrar { public init() {} public func addObserver(_ observer: some Observer) {} public func removeObserver(_ observer: some Observer) {} public func beginAccess(_ keyPath: KeyPath) {} public func beginAccess() {} public func endAccess() {} public func register(observable: Subject, willSet: KeyPath, to: Value) {} public func register(observable: Subject, didSet: KeyPath) {} } @attached( member, names: named(_registrar), named(addObserver), named(removeObserver), named(withTransaction), named(Storage), named(_storage) ) @attached(memberAttribute) @attached(extension, conformances: Observable) public macro Observable() = #externalMacro(module: "MacroDefinition", type: "ObservableMacro") @attached(accessor) public macro ObservableProperty() = #externalMacro(module: "MacroDefinition", type: "ObservablePropertyMacro") @attached(peer, names: overloaded) public macro addCompletionHandler() = #externalMacro(module: "MacroDefinition", type: "AddCompletionHandler") @attached(peer, names: suffixed(Builder)) public macro AddClassReferencingSelf() = #externalMacro(module: "MacroDefinition", type: "AddClassReferencingSelfMacro") @attached(peer, names: named(value)) public macro declareVarValuePeer() = #externalMacro(module: "MacroDefinition", type: "VarValueMacro")