TreeNodeっぽいデータ構造からpathを指定して対象ノードを探す

クラス名は仮。本来TreeNodeって付けたいけどそうするとSystem.Windows.Controls.TreeNodeとかぶって面倒。

    public class ComplexSelectItem
    {
        public string id;

        public string text;
        public List<ComplexSelectItem> subItems;
        public ComplexSelectItem()
        {
            text = "";
            subItems = new List<ComplexSelectItem>();
        }
        public bool hasChild()
        {
            return (subItems.Count > 0);
        }
        public ComplexSelectItem find(List<string> path)
        {
            ComplexSelectItem target = null;
            ComplexSelectItem current = this;
            IEnumerator<string> e = path.GetEnumerator();
            while (e.MoveNext())
            {
                IEnumerator<ComplexSelectItem> ee = current.subItems.GetEnumerator();
                while (ee.MoveNext())
                {
                    if (ee.Current.text == e.Current)
                    {
                        current = ee.Current;
                        target = current;
                        break;
                    }
                }
            }
            return target;

        }

        public void dump(TextWriter writer, string indent)
        {
            writer.WriteLine(indent + text);
            foreach (ComplexSelectItem item in subItems)
            {
                item.dump(writer, indent + "  ");
            }
        }
    }

なんかいろいろ間違っている…