docs: private void reselectSelector(Timepoint newSelection, boolean forceDrawDot, int index) {
          switch(index) {
              case HOUR_INDEX:
                  // The selection might have changed, recalculate the degrees and innerCircle values
                  int hour = newSelection.getHour();
                  boolean isInnerCircle = isHourInnerCircle(hour);
                  int degrees = (hour%12)*360/12;
                  if(!mIs24HourMode) hour = hour%12;
                  if(!mIs24HourMode && hour == 0) hour += 12;
  
                  mHourRadialSelectorView.setSelection(degrees, isInnerCircle, forceDrawDot);
                  mHourRadialTextsView.setSelection(hour);
                  // If we rounded the minutes, reposition the minuteSelector too.
                  if(newSelection.getMinute() != mCurrentTime.getMinute()) {
                      int minDegrees = newSelection.getMinute() * (360 / 60);
                      mMinuteRadialSelectorView.setSelection(minDegrees, isInnerCircle, forceDrawDot);
                      mMinuteRadialTextsView.setSelection(newSelection.getMinute());
                  }
                  // If we rounded the seconds, reposition the secondSelector too.
                  if(newSelection.getSecond() != mCurrentTime.getSecond()) {
                      int secDegrees = newSelection.getSecond() * (360 / 60);
                      mSecondRadialSelectorView.setSelection(secDegrees, isInnerCircle, forceDrawDot);
                      mSecondRadialTextsView.setSelection(newSelection.getSecond());
                  }
                  break;
              case MINUTE_INDEX:
                  // The selection might have changed, recalculate the degrees
                  degrees = newSelection.getMinute() * (360 / 60);
  
                  mMinuteRadialSelectorView.setSelection(degrees, false, forceDrawDot);
                  mMinuteRadialTextsView.setSelection(newSelection.getMinute());
                  // If we rounded the seconds, reposition the secondSelector too.
                  if(newSelection.getSecond() != mCurrentTime.getSecond()) {
                      int secDegrees = newSelection.getSecond()* (360 / 60);
                      mSecondRadialSelectorView.setSelection(secDegrees, false, forceDrawDot);
                      mSecondRadialTextsView.setSelection(newSelection.getSecond());
                  }
                  break;
              case SECOND_INDEX:
                  // The selection might have changed, recalculate the degrees
                  degrees = newSelection.getSecond() * (360 / 60);
                  mSecondRadialSelectorView.setSelection(degrees, false, forceDrawDot);
                  mSecondRadialTextsView.setSelection(newSelection.getSecond());
          }
  
          // Invalidate the currently showing picker to force a redraw
          switch(getCurrentItemShowing()) {
              case HOUR_INDEX:
                  mHourRadialSelectorView.invalidate();
                  mHourRadialTextsView.invalidate();
                  break;
              case MINUTE_INDEX:
                  mMinuteRadialSelectorView.invalidate();
                  mMinuteRadialTextsView.invalidate();
                  break;
              case SECOND_INDEX:
                  mSecondRadialSelectorView.invalidate();
                  mSecondRadialTextsView.invalidate();
          }
      }