I\'ve a small units tests to test circular dependencies.
My object is the following:
[ProtoContract]
public class Node
{
[ProtoMember(1)]
pub
To me it looks as if the question is similar to this question where we realized a problem with the root level entity.
What we had as well is that for child object the reference where correct but the if the root item was referenced again a copy was there after deserialization.
Our work-around that we used for some time (and then we switched to pure JSON) was to add an extra root node. With this extra root node references where deseriliazed correctly. So this might be a work-around you could try as well.