public void Add(HgRevlogEntry revlogEntry)
        {
            var node = new HgRevlogGraphNode(revlogEntry.NodeID, revlogEntry.Revision);
            
            //
            // We only link back to Root when both parents are Null
            if(revlogEntry.FirstParentRevisionNodeID == HgNodeID.Null && revlogEntry.SecondParentRevisionNodeID == HgNodeID.Null)
            {
                node.FirstParent = Root;
                Root.Children.Add(node);
            } // if
            else
            {
                node.FirstParent = nodes[revlogEntry.FirstParentRevisionNodeID.Long]; // First parent is always there
                node.SecondParenet = 
                    revlogEntry.SecondParentRevisionNodeID == HgNodeID.Null ?
                        null :
                        nodes[revlogEntry.SecondParentRevisionNodeID.Long];
                
                node.FirstParent.Children.Add(node);
                if(node.SecondParenet != null)
                    node.SecondParenet.Children.Add(node);
            } // else

            nodes[node.NodeID.Long] = node;
        }
 public HgRevlogGraph()
 {
     Root = new HgRevlogGraphNode(HgNodeID.Null, uint.MaxValue);
 }