<Lukas Renggli> If we had an immutability bit, that the compiler would set for objects in the literal array (and with what we could do a lot of other cool stuff), then people would not run into such problems. </Lukas Renggli>
As a principle of language design, literals should be immutable. And immutability needs to be independently settable for each named instance variable, and independently settable for the indexable slots (as a group, not for each index.) The reason is because some named instance variables may need to be "caching variables" whose values are lazily computed only when needed--in fact, such variables may need to be weak references so that the garbage collector can set them to nil.
--Alan