Both Xcode Version 7.3.1 (7D1014) and Xcode Version 8.0 beta 6 (8S201h)
Surprisingly, I can't find another bug open for this.
Suppose we have
We then declare a function in a protocol extension to clear our variable. The function must be mutating or else the variable can't be cleared.
We can both implement and consume this protocol from a value type
However the same is not true for a reference type
There is actually no real workaround to this example. In general, the func can be made non-mutating (which doesn't work here) or the protocol can be constrained to reference types (preventing Qux from implementing it), or the reference type can be converted to a value type (not for subclasses of NSViewController).