Still need a separate type because RecursiveType only reuses objects that are strictly equal, while pointers should reuse anything with the same value representation.
- If first instance of value (as judged by value buffer), write value
- Otherwise write a
flexInt offset to it
- There should no longer be any need for placeholder pointer bytes and having the root type call
setPointers()