This is an interesting approach to allowing delegates to expose API without introducing potential for conflicts with the property’s own API. I like how it ties the delegate API more directly to the delegating property. I’m not sure how it would work for use cases like Ref which use key path member lookup. We can’t prefix a subscript with $ and if we could it wouldn’t be compatible with key path member lookup. If we consider this approach I think it needs more refinement.
Do you have any idea how this approach would support direct (potentially out of line) initialization of the delegate? It also isn’t clear how a user of the delegate could control visibility of the delegate API on the property using the delegate. I suppose we could say private(storage) makes the $-prefixed delegate APIs private (and so on for other access modifiers).