Program: 179559
Project: 179559
Buggy source:
private void processNetworkMessage(Object message){
  if (message instanceof NetworkMessage) {
    NetworkMessage msg=(NetworkMessage)message;
switch (msg.getMessageType()) {
case UPDATE_MESSAGE:
      fireEvent(new NetworkEvent(this,msg),UpdateReceivedListener.class);
    break;
case REQUEST_MESSAGE:
  fireEvent(new NetworkEvent(this,msg),RequestReceivedListener.class);
break;
case INITIAL_GAME_STATE_MESSAGE:
break;
case PARTIAL_GAMESTATE_UPDATE_MESSAGE:
break;
case GAMESTATE_UPDATE_MESSAGE:
break;
case GAMESTATE_REQUEST_MESSAGE:
fireEvent(new NetworkEvent(this,msg),GameStateRequestReceivedListener.class);
break;
case TERMINATION_REQUEST_MESSAGE:
fireEvent(new NetworkEvent(this,msg),TerminationRequestReceivedListener.class);
break;
case PEER_LIST_MESSAGE:
break;
case PEER_LIST_REQUEST_MESSAGE:
sendPeerList();
break;
case LATENCY_REQUEST_MESSAGE:
NetworkMessage latMsg=new NetworkMessage("String_Node_Str");
latMsg.setMessageType(NetworkMessage.MessageType.LATENCY_RESPONSE_MESSAGE);
writeOut(latMsg);
break;
case LATENCY_RESPONSE_MESSAGE:
latencyEndTime=System.currentTimeMillis();
if (latencyStartTime < latencyEndTime) {
fireEvent(new NetworkEvent(this,(latencyEndTime - latencyStartTime)),LatencyUpdateListener.class);
}
default :
fireEvent(new NetworkEvent(this,msg),UnknownMessageTypeReceivedListener.class);
}
}
 else if (message instanceof PlayerRegistrationMessage) {
PlayerRegistrationMessage regMessage=(PlayerRegistrationMessage)message;
ServerVariables.playerNetworkAddressList.put(new Integer(regMessage.playerID),socket.getInetAddress());
playerID=regMessage.playerID;
playerName=regMessage.playerName;
registerPlayer(regMessage);
sendInitialState();
sendPeerList();
fireEvent(new NetworkEvent(this,"String_Node_Str"),ConnectionEstablishedListener.class);
}
 else {
System.err.println("String_Node_Str" + message.getClass());
}
}

Fixed version (ground truth):
private void processNetworkMessage(Object message){
  if (message instanceof NetworkMessage) {
    NetworkMessage msg=(NetworkMessage)message;
switch (msg.getMessageType()) {
case UPDATE_MESSAGE:
      fireEvent(new NetworkEvent(this,msg),UpdateReceivedListener.class);
    break;
case REQUEST_MESSAGE:
  fireEvent(new NetworkEvent(this,msg),RequestReceivedListener.class);
break;
case INITIAL_GAME_STATE_MESSAGE:
break;
case PARTIAL_GAMESTATE_UPDATE_MESSAGE:
break;
case GAMESTATE_UPDATE_MESSAGE:
break;
case GAMESTATE_REQUEST_MESSAGE:
fireEvent(new NetworkEvent(this,msg),GameStateRequestReceivedListener.class);
break;
case TERMINATION_REQUEST_MESSAGE:
fireEvent(new NetworkEvent(this,msg),TerminationRequestReceivedListener.class);
break;
case PEER_LIST_MESSAGE:
break;
case PEER_LIST_REQUEST_MESSAGE:
sendPeerList();
break;
case LATENCY_REQUEST_MESSAGE:
NetworkMessage latMsg=new NetworkMessage("String_Node_Str");
latMsg.setMessageType(NetworkMessage.MessageType.LATENCY_RESPONSE_MESSAGE);
writeOut(latMsg);
break;
case LATENCY_RESPONSE_MESSAGE:
latencyEndTime=System.currentTimeMillis();
if (latencyStartTime < latencyEndTime) {
fireEvent(new NetworkEvent(this,(latencyEndTime - latencyStartTime)),LatencyUpdateListener.class);
}
break;
default :
fireEvent(new NetworkEvent(this,msg),UnknownMessageTypeReceivedListener.class);
break;
}
}
 else if (message instanceof PlayerRegistrationMessage) {
PlayerRegistrationMessage regMessage=(PlayerRegistrationMessage)message;
ServerVariables.playerNetworkAddressList.put(new Integer(regMessage.playerID),socket.getInetAddress());
playerID=regMessage.playerID;
playerName=regMessage.playerName;
registerPlayer(regMessage);
sendInitialState();
sendPeerList();
fireEvent(new NetworkEvent(this,"String_Node_Str"),ConnectionEstablishedListener.class);
}
 else {
System.err.println("String_Node_Str" + message.getClass());
}
}