It may sometimes be reasonable to collect pointers into a value-based collection in order to deal with identies instead of values. However, you should never attempt to persist them, since a collection with value semantics will simply store the values of the pointers into the stream, rather than storing the information pointed to. If you were to pull those old pointers out of the stream and back into memory, they would almost surely point to invalid locations.