Program: 86596
Project: 86596
Buggy source:
/** 
 * @param serverContext
 * @param gameSession
 */
public InGameState(final ServerContext serverContext,final GameSession gameSession){
  this.serverContext=serverContext;
  this.gameSession=gameSession;
  this.players=gameSession.getPlayers();
  this.clients=serverContext.getClients();
  this.protocol=serverContext.getServerProtocol();
  this.dispatcher=gameSession.getEventDispatcher();
  this.game=gameSession.getGame();
  ServerSeventhConfig config=serverContext.getConfig();
  this.netFullStatDelay=config.getServerNetFullStatDelay();
  this.netPartialStatDelay=config.getServerNetPartialStatDelay();
  final long netRate=Math.abs(config.getServerNetUpdateRate());
  this.netUpdateRate=1000 / netRate == 0 ? 20 : netRate;
  this.nextGameStatUpdate=this.netFullStatDelay;
  this.nextGamePartialStatUpdate=this.netPartialStatDelay;
  this.nextGameUpdate=this.netUpdateRate;
  this.statsMessage=new GameStatsMessage();
  this.partialStatsMessage=new GamePartialStatsMessage();
  this.clientIterator=new RemoteClientIterator(){
    @Override public void onRemoteClient(    RemoteClient client){
      if (client.isReady()) {
        sendGameUpdateMessage(client.getId());
      }
      if (calculatePing) {
        int ping=client.getConnection().getReturnTripTime();
        client.getPlayer().setPing(ping);
      }
    }
  }
;
  this.dispatcher.addEventListener(PlayerKilledEvent.class,new PlayerKilledListener(){
    @Override @EventMethod public void onPlayerKilled(    PlayerKilledEvent event){
      PlayerKilledMessage msg=new PlayerKilledMessage();
      msg.deathType=event.getMeansOfDeath();
      msg.killedById=event.getKillerId();
      msg.playerId=event.getPlayer().getId();
      msg.posX=(short)event.getPos().x;
      msg.posY=(short)event.getPos().y;
      protocol.sendPlayerKilledMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(PlayerSpawnedEvent.class,new PlayerSpawnedListener(){
    @Override @EventMethod public void onPlayerSpawned(    PlayerSpawnedEvent event){
      PlayerSpawnedMessage msg=new PlayerSpawnedMessage();
      Player player=event.getPlayer();
      msg.playerId=player.getId();
      msg.posX=(short)event.getSpawnLocation().x;
      msg.posY=(short)event.getSpawnLocation().y;
      protocol.sendPlayerSpawnedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(GameEndEvent.class,new GameEndListener(){
    @Override @EventMethod public void onGameEnd(    GameEndEvent event){
      if (!gameEnded) {
        GameEndedMessage msg=new GameEndedMessage();
        msg.stats=game.getNetGameStats();
        protocol.sendGameEndedMessage(msg);
        gameEnded=true;
      }
    }
  }
);
  this.dispatcher.addEventListener(RoundEndedEvent.class,new RoundEndedListener(){
    @Override @EventMethod public void onRoundEnded(    RoundEndedEvent event){
      RoundEndedMessage msg=new RoundEndedMessage();
      msg.stats=game.getNetGameStats();
      Team winner=event.getWinner();
      if (winner != null) {
        msg.winnerTeamId=winner.getId();
      }
      protocol.sendRoundEndedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(RoundStartedEvent.class,new RoundStartedListener(){
    @Override @EventMethod public void onRoundStarted(    RoundStartedEvent event){
      RoundStartedMessage msg=new RoundStartedMessage();
      msg.gameState=game.getNetGameState();
      protocol.sendRoundStartedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(BombPlantedEvent.class,new BombPlantedListener(){
    @Override @EventMethod public void onBombPlanted(    BombPlantedEvent event){
      int bombTargetId=event.getBombTarget() != null ? event.getBombTarget().getId() : Entity.INVALID_ENTITY_ID;
      protocol.sendBombPlantedMessage(new BombPlantedMessage(bombTargetId));
    }
  }
);
  this.dispatcher.addEventListener(BombDisarmedEvent.class,new BombDisarmedListener(){
    @EventMethod @Override public void onBombDisarmedEvent(    BombDisarmedEvent event){
      int bombTargetId=event.getBombTarget() != null ? event.getBombTarget().getId() : Entity.INVALID_ENTITY_ID;
      protocol.sendBombDisarmedMessage(new BombDisarmedMessage(bombTargetId));
    }
  }
);
  this.dispatcher.addEventListener(BombExplodedMessage.class,new BombExplodedListener(){
    @EventMethod @Override public void onBombExplodedEvent(    BombExplodedEvent event){
      protocol.sendBombExplodedMessage(new BombExplodedMessage());
    }
  }
);
  this.dispatcher.addEventListener(TileRemovedEvent.class,new TileRemovedListener(){
    @Override public void onTileRemoved(    TileRemovedEvent event){
      TileRemovedMessage msg=new TileRemovedMessage();
      msg.x=event.getTileX();
      msg.y=event.getTileY();
      protocol.sendTileRemovedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(FlagCapturedEvent.class,new FlagCapturedListener(){
    @Override public void onFlagCapturedEvent(    FlagCapturedEvent event){
      FlagCapturedMessage msg=new FlagCapturedMessage();
      msg.flagId=event.getFlag().getId();
      msg.capturedBy=event.getPlayerId();
      protocol.sendFlagCapturedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(FlagReturnedEvent.class,new FlagReturnedListener(){
    @Override public void onFlagReturnedEvent(    FlagReturnedEvent event){
      FlagReturnedMessage msg=new FlagReturnedMessage();
      msg.flagId=event.getFlag().getId();
      msg.returnedBy=event.getPlayerId();
      protocol.sendFlagReturnedMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(FlagStolenEvent.class,new FlagStolenListener(){
    @Override public void onFlagStolenEvent(    FlagStolenEvent event){
      FlagStolenMessage msg=new FlagStolenMessage();
      msg.flagId=event.getFlag().getId();
      msg.stolenBy=event.getPlayerId();
      protocol.sendFlagStolenMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(KillStreakEvent.class,new KillStreakListener(){
    @Override public void onKillStreak(    KillStreakEvent event){
      PlayerAwardMessage msg=new PlayerAwardMessage();
      msg.playerId=event.getPlayer().getId();
      msg.award=Award.KillStreak;
      msg.killStreak=(byte)event.getStreak();
      protocol.sendPlayerAwardMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(KillRollEvent.class,new KillRollListener(){
    @Override public void onKillRoll(    KillRollEvent event){
      PlayerAwardMessage msg=new PlayerAwardMessage();
      msg.playerId=event.getPlayer().getId();
      msg.award=Award.KillRoll;
      msg.killStreak=(byte)event.getStreak();
      protocol.sendPlayerAwardMessage(msg);
    }
  }
);
  this.dispatcher.addEventListener(PlayerAwardEvent.class,new PlayerAwardListener(){
    @Override public void onPlayerAward(    PlayerAwardEvent event){
      PlayerAwardMessage msg=new PlayerAwardMessage();
      msg.playerId=event.getPlayer().getId();
      msg.award=event.getAward();
      protocol.sendPlayerAwardMessage(msg);
    }
  }
);
}

Fixed version (ground truth):
/** 
 * @param serverContext
 * @param gameSession
 */
public InGameState(final ServerContext serverContext,final GameSession gameSession){
}