http://fullstackprep.dev/Articles/webd/csharp/how-to-handle-circular-references-in-serialization