Your proposal requires yet a new type constructor, "shared immutable", with a new set of rules and overloads. I don't think it's worth it. Currently, "shared immutable" == "immutable", i.e. the two are indistinguishable.