internal static List <(object id, HashSet <FilePath> set)> ComputeItems(WorkspaceObject item, bool registerEvent) { var toAdd = new List <(object, HashSet <FilePath>)> (); foreach (var toRegister in item.GetAllItems <WorkspaceObject> ()) { if (registerEvent && toRegister is WorkspaceItem workspaceItem) { workspaceItem.RootDirectoriesChanged += OnRootDirectoriesChanged; } toAdd.Add((toRegister, GetPathsToWatch(toRegister))); } return(toAdd); }