message: Decided against handling add/remove tabs for now
  It's complicated because when the name changes come in the tab bar item children haven't been udpated yet.
  Allowed tab name changes though, so just reset the selected index after update
diff: - (void)setTitles:(NSArray<NSString *> *)titles
  {
  - NSInteger selectedIndex = MIN(MAX(0, self.selectedSegmentIndex), titles.count - 1);
  - BOOL selectedIndexChanged = selectedIndex != self.selectedSegmentIndex;
  + NSInteger selectedSegmentIndex = MAX(0, self.selectedSegmentIndex);
  [self removeAllSegments];
  for (NSString *title in titles) {
  [self insertSegmentWithTitle:title atIndex:self.numberOfSegments animated:NO];
  }
  - self.selectedSegmentIndex = selectedIndex;
  - if (!!self.window && selectedIndexChanged)
  - [self selectTab:YES];
  + self.selectedSegmentIndex = selectedSegmentIndex;
  }
  - (void)setBackgroundColor:(UIColor *)backgroundColor
  