Until we have the "this protocol is only for value types" part, we can't do the "treat mutating
as if it is not there in reference types" part. It's also not obviously a good idea since an immutable class type is pretty much indistinguishable from a value type except for ObjectIdentifier
(and ===
).
(A long time ago @dabrahams and I talked about disallowing classes from conforming to protocols with mutating
requirements, which is similar. But at this point it'd be massively source-breaking to do so.)