Avoid KVC Crashes in setValue on let Properties at Compile Time (and KVO Problems by Forgetting @objc or dynamic)

So any ideas how the compiler could add diagnostics, or fix the issue by other means? Currently we have 2 non-practical suggestions in this thread:

  1. Make KeyPath only usable for dynamic keypaths - would break a lot of current use cases, as KeyPath is helpful in other contexts for non-dynamic keypaths as well

  2. Add new subtypes to KeyPath and WritableKeyPath that guarantee that all path elements are dynamic (and maybe @objc too) - problematic as we need to add 2 subtypes which is overcomplicating the existing KeyPath class hierarchy

Any other ideas?