I'm storing a reference to an IMap in a custom object (which is stored by a custom extension) so that it can listen to map events. When I save the custom object using IPersistStream and then reload the MXD, it appears that I now have a reference to a COPY of the original IMap. I tested this by making a simple custom extension that saves the first IMap in the document... when reopening the saved MXD, the saved IMap != the first IMap in the document.
Is this how it should be working? Should I just be saving the location of the map in the document (rather than the actual IMap) and then resetting the reference during IPeristStream.Load?
I'm using C#, ArcGIS 10.0, and VS 2008.