How This Occurred
The default value for the focusID and the dealerID were both -1. There was also no checks to ensure activeIDs was populated.
How This Was Problematic
It meant that activeIDs was being queried for an index that didn’t exist, either because the list was empty or because the search index was a negative integer. This produces a crash upon this error: IndexOutOfBounds.
How I Fixed It
I adjusted default values for focusID and dealerID, the logic to calculate indexes in activeIDs ( including: dealerIndexInActiveIDs and focusIndexInActiveIDs ) to ensure that they returned -1 if activeIDs is empty and I added checks to setInitialFocusPlayer() and incrementFocusPlayer() to ensure activeIDs is not empty and if it is empty it throws a custom error message:
throw IndexOutOfBoundsException("NO ACTIVE PLAYERS: activeIDs IS EMPTY")