Buggy code:
public void removeRole ( RoleTemplate rT ) { } public ArrayList < RoleTemplate > getAllRoles ( ) { } public Team getTeam ( int team ) { } private ArrayList < RandomRole > randomRoles = new ArrayList < RandomRole > ( ) ; public PlayerList getTeamMates ( int t ) { } public ArrayList < Player > getRoles ( String roleName ) { } public void runSetupChecks ( ) { } private void uniqueChecks ( ) { } private void randomChecks ( ) { } private void sizeCheck ( ) { } private void opponentCheck ( ) { } private void sheriffChecks ( ) { } private void playerNumberCheck ( ) { } private boolean gameStarted = false ; public void startGame ( ) { } private void assignRoles ( ArrayList < RoleTemplate > list ) { } public Role convertRoles ( String name , Player p ) { } public boolean hasRole ( String roleName , int team ) { } private int dayNumber = - 1 ; public int getDayNumber ( ) { } private boolean isDay = true ; private static final boolean DAY_TIME = true ; private static final boolean NIGHT_TIME = false ; public boolean isDay ( ) { } public boolean isNight ( ) { } private void startNight ( PlayerList lynchedList ) { } private PlayerList nightList = new PlayerList ( ) ; private int key = 0 ; protected void endNight ( Player p ) { } protected void cancelEndNight ( Player p ) { } protected boolean endedNight ( Player p ) { } protected boolean canDoNightAction ( ) { } public boolean everyoneCompletedNightActions ( ) { } public PlayerList getLivePlayers ( ) { } private EventManager events ; public String getEvents ( String access , boolean HTML ) { } public String getHappenings ( ) { } public String getEvents ( Player p , boolean HTML ) { } private ArrayList < CommandListener > cListeners ; public void addEvent ( Event e ) { } public ArrayList < Event > getEvents ( ) { } public ArrayList < CommandListener > getCommandListeners ( ) { } public ArrayList < String > getCommands ( ) { } private void endNight ( ) { } protected static int UNSUBMITTED = Integer . MAX_VALUE ; private void kills ( ) { } private void cultCheck ( ) { } private void guards ( ) { } private void heals ( ) { } private void doNightAction ( String ... roles ) { } private void stalkings ( ) { } private PlayerList setDead ( ) { } public PlayerList getDeadList ( int dayNumber ) { } public int getDeadSize ( ) { } public int getLiveSize ( ) { } private boolean canVote ; public void startDay ( PlayerList newDead ) { } private HashMap < Player , Player > voterList = new HashMap < > ( ) ; private HashMap < Player , PlayerList > voteList = new HashMap < > ( ) ; private void voteCheck ( Player voter , Player target ) { } void vote ( Player voter , Player target ) { } public static String numberOfVotesNeeded ( int difference ) { } private void addVoteHelper ( Player voter , Player target ) { } Player unVote ( Player voter ) { if ( ! ( voter . isAlive ( ) ) ) throw new VotingException ( "Dead<seq2seq4repair_space>players<seq2seq4repair_space>can't<seq2seq4repair_space>vote<seq2seq4repair_space>or<seq2seq4repair_space>unvote." ) ; if ( ! ( voterList . containsKey ( voter ) ) ) throw new VotingException ( ( voter + "<seq2seq4repair_space>isn't<seq2seq4repair_space>voting<seq2seq4repair_space>anyone<seq2seq4repair_space>right<seq2seq4repair_space>now." ) ) ; Event e = new Event ( ) ; e . setCommand ( voter , SKIP_VOTE ) ; Player prevTarget = unVoteHelper ( voter ) ; int difference = ( getMinLynchVote ( ) ) - ( getVoteCountOf ( Skipper ) ) ; if ( prevTarget == ( Skipper ) ) e . add ( ( "<seq2seq4repair_space>decided<seq2seq4repair_space>against<seq2seq4repair_space>skipping<seq2seq4repair_space>the<seq2seq4repair_space>lynch" + ( Narrator . numberOfVotesNeeded ( difference ) ) ) ) ; else <START_BUG> e . add ( voter , ( ( "<seq2seq4repair_space>unvoted<seq2seq4repair_space>" + prevTarget ) + ( Narrator . numberOfVotesNeeded ( difference ) ) ) ) ; <END_BUG> addEvent ( e ) ; for ( NarratorListener nl : listeners ) { nl . onUnvote ( voter , prevTarget , difference ) ; } return prevTarget ; } private Player unVoteHelper ( Player voter ) { } void skipVote ( Player p ) { } public void checkVote ( ) { } protected int getVoteCountOf ( Player voted ) { } public int getMinLynchVote ( ) { } protected Player getVoteTarget ( Player voter ) { } protected PlayerList getVoteListOf ( Player target ) { } private void isDayCheck ( ) { } public Object commandLock = new Object ( ) ; protected void talk ( Player p , String message ) { } public void endDay ( PlayerList lynchedTargets ) { } private ArrayList < NarratorListener > listeners = new ArrayList < NarratorListener > ( ) ; public void addListener ( NarratorListener nL ) { } public void addListener ( CommandListener nL ) { } public void removeListener ( NarratorListener nL ) { } public void removeListener ( CommandListener cL ) { } public ArrayList < NarratorListener > getListeners ( ) { } private Object progSync = new Object ( ) ; public synchronized boolean isInProgress ( ) { } private void determineWinners ( ) { } private Event win ; public Event getWinMessage ( ) { } public static Event winMessage ( ArrayList < Player > winners ) { } public void changeRole ( Player p , String role , int team ) { } protected void modkill ( Player player ) { } public void removeFromVotes ( PlayerList resets ) { } public void writeToPackage ( Packager dest , CommunicatorHandler ch ) { } public Narrator ( Narrator n ) { } public Narrator ( Packager in , CommunicatorHandler ch ) { } public boolean equals ( Object o ) { }

Fix:
e . add ( voter , "<seq2seq4repair_space>unvoted<seq2seq4repair_space>" , prevTarget , Narrator . numberOfVotesNeeded ( difference ) ) ;