Approaches to sentinel values in immutables

I’m not sure I see this is as equivalent. The Enzyme one just returns a DataType (e.g.), so is totally static and immutable. Whereas the one under consideration here is a fully instantiated and mutable live object.

These return values are not types, but enum values. But your point stands: they are immutable primitive values, not objects on the heap.