code: @Override
    public void reset(
        Set<String> reservedNames,
        String prefix,
        @Nullable char[] reservedFirstCharacters,
        @Nullable char[] reservedNonFirstCharacters) {
  
      this.reservedNames = reservedNames;
      this.prefix = prefix;
      this.nameCount = 0;
  
      // build the character arrays to use
      this.firstChars = reserveCharacters(FIRST_CHAR, reservedFirstCharacters);
      this.nonFirstChars = reserveCharacters(NONFIRST_CHAR, reservedNonFirstCharacters);
      Arrays.sort(firstChars);
      Arrays.sort(nonFirstChars);
  
      checkPrefix(prefix);
    }
docs: Note that the history of what characters are most used in the program (set through calls to
  'favor') is not deleted. Upon 'reset', that history is taken into account for the names that
  will be generated later: it re-calculates how characters are prioritized based on how often the
  they appear in the final output.