Efficient expanded implementation

Current issues

Expanded were hard to implement correctly because of the high requirement on the GC. It was done so that embedded expanded references were just treated as normal references except they were pointing to a subpart of their enclosing object. Therefore when within the expanded object, we were assigning a new object to an attribute, we needed to go back not to the expanded header, but to the enclosing object header to see if it needed to be marked so that the GC update some references if needed. Most of the bugs we had were related to an incorrect header update.

Generalities and requirements about expanded

Implementation