Here's a simplified example of complex object serialization.
A technique we may be able to use for saving projects. It
appears that .NET is able to do a deep copy of lists when
serializing an object, if you are able to set an attribute
with the type of object contained in the list, which we
should be able to do.
We could use this to serialize the Views, and subsequently
the DrawableComponents, and subsequently the data model
objects. But more research is needed.
I've attached the source files for the example and the
resulting XML.