rather than punching a hole in const/immutable struct S meta { int refCount; .... } do { int payload; .... } Immutable S s is now conceptually an immutable object and a mutable object with metadata behind the scenes that feels like a single object from a user perspective?