/// <summary> /// Disposes the given program set(s). If no specific program sets are provided, disposes all program sets. /// </summary> public void DisposeProgramSets(List <string> programSetNames = null, bool force = false) { if (programSetNames == null || !programSetNames.Any()) { ProgramSets?.ForEach(programSet => programSet?.Dispose(force)); ProgramSets?.Clear(); } else { var programSetsToDispose = ProgramSets?.Where(programSet => programSetNames.Contains(programSet.Name)).ToList(); programSetsToDispose?.ForEach(programSet => { ProgramSets?.Remove(programSet); programSet?.Dispose(force); }); } }