What is this structure called?
Why do you have HEAD and TAIL NodeTypes? Doesn't their position on the branch tell you that?
I'm concerned that you have structure traversal code infused into AchievementNode class. Classically the structure - tree, queue, List, etc. - is independent of the objects it holds. I would think greatly upon using something like Dictionary&lt;T&gt;, List&lt;T&gt;, etc. Use that structure's inherent reference/traversal features in the context of NodeType. - wrapping (inheriting?) that structure along with your concept of NodeType into a class that is essentially a MyNodes&lt;AcheivementNode&gt; class. I wonder, is MyNodes&lt;NodeType&gt; what you are really building? In any case I suspect the separation of concerns will make the NodeType idea standout better conceptually and architecturally.
How many palaces do you have NodeType defined I wonder. Why is NodeType enum defined inside AchievementNode? That's unusual. You want it hidden from client code? I don't think so since you have method parameters of NodeType.