more complex example
more examples
subclass, shared and circular references