internal void Remove(TabGroup tabGroup) { int index = stackedContent.IndexOf(tabGroup); if (index < 0) { return; } if (stackedContent.Count == 1) { ActiveIndex = -1; stackedContent.Remove(tabGroup); } else { if (ActiveIndex == index) { int newIndex = index == 0 ? index + 1 : index - 1; SetActive(stackedContent[newIndex]); ActiveIndex = newIndex; } var current = stackedContent[ActiveIndex]; stackedContent.Remove(tabGroup); ActiveIndex = stackedContent.IndexOf(current); Debug.Assert(ActiveIndex >= 0); } tabGroupCollectionChanged.Raise(this, new TabGroupCollectionChangedEventArgs(false, tabGroup)); }