private void TrySaveWindowState(IModSettingsWindowState state)
 {
     if (state == null)
     {
         return;
     }
     state.ExpandedSettingPackIds = expandedModEntries
                                    .Select(e => e.SettingsPack?.ModId)
                                    .Where(id => id != null)
                                    .ToArray();
     state.VerticalScrollPosition = scrollPosition.y;
 }
        private void TryRestoreWindowState(IModSettingsWindowState state)
        {
            if (state == null)
            {
                return;
            }
            expandedModEntries.Clear();
            var expandedIdSet = (state.ExpandedSettingPackIds ?? Enumerable.Empty <string>()).ToHashSet();

            expandedModEntries.AddRange(listedMods.Where(
                                            m => m.SettingsPack != null && expandedIdSet.Contains(m.SettingsPack.ModId)
                                            ));
            scrollPosition = new Vector2(0f, state.VerticalScrollPosition);
        }