internal int Deduplicate(Dictionary <BuildNode, BuildNode> canonicalNodes) { /* * if(Path == "ziegc") { * Console.WriteLine($"Here! {Path}"); * } */ var processed = 1; if (FirstChild != null) { if (canonicalNodes.ContainsKey(FirstChild)) { FirstChild = canonicalNodes[FirstChild]; } else { canonicalNodes[FirstChild] = FirstChild; processed += FirstChild.Deduplicate(canonicalNodes); } } if (NextSibling != null) { if (canonicalNodes.ContainsKey(NextSibling)) { NextSibling = canonicalNodes[NextSibling]; } else { canonicalNodes[NextSibling] = NextSibling; processed += NextSibling.Deduplicate(canonicalNodes); } } return(processed); }