private void AddChild(Application app, AppPath appPath, int pathIndex) { if (pathIndex < 0) { return; } var name = appPath.Indices[pathIndex]; var appNodeType = appPath.AppNodeTypes[pathIndex]; if (pathIndex < appPath.Indices.Length - 1) { AppNode child = null; foreach (var pathChild in this.Children) { if (pathChild.Name == name && pathChild.AppNodeType == appNodeType) { child = (AppNode)pathChild; break; } } var nextIndex = appPath.GetNextIndex(pathIndex); if (child == null) { child = new AppNode(name, appNodeType, this); } child.AddChild(app, appPath, nextIndex); } else { var child = new AppNode(name, appNodeType, this, app); } }