protected virtual void Visit(Plan p, Collection <int> path) { for (int i = 0; i < p.parentPlans.Length; i++) { Plan p2 = p.parentPlans[i]; path.Add(i); Visit(p2, path); path.RemoveAt(path.Count - 1); } nameManager.ProcessPlan(p, path); }