Program: 179547
Project: 179547
Buggy source:
private void processNetworkMessage(NetworkMessage message){
  if (message instanceof PlayerRegistrationMessage) {
    PlayerRegistrationMessage regMessage=(PlayerRegistrationMessage)message;
    playerID=ServerVariables.playerNetworkAddressList.size();
    ServerVariables.playerNetworkAddressList.add(socket.getInetAddress());
    playerName=regMessage.playerName;
    PlayerRegistrationMessage reply=new PlayerRegistrationMessage(playerID);
    writeOut(reply);
    registerPlayer(regMessage);
    sendInitialState();
    sendPeerList();
    fireEvent(new NetworkEvent(this,"String_Node_Str"),ConnectionEstablishedListener.class);
  }
 else   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 {
System.err.println("String_Node_Str" + message.getClass());
}
}

Fixed version (ground truth):
private void processNetworkMessage(NetworkMessage message){
  if (message instanceof PlayerRegistrationMessage) {
    System.out.println("String_Node_Str" + message.getMessage());
    PlayerRegistrationMessage regMessage=(PlayerRegistrationMessage)message;
    playerID=ServerVariables.playerNetworkAddressList.size();
    ServerVariables.playerNetworkAddressList.add(socket.getInetAddress());
    playerName=regMessage.playerName;
    PlayerRegistrationMessage reply=new PlayerRegistrationMessage(playerID);
    writeOut(reply);
    registerPlayer(regMessage);
    sendInitialState();
    sendPeerList();
    fireEvent(new NetworkEvent(this,"String_Node_Str"),ConnectionEstablishedListener.class);
  }
 else   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 {
System.err.println("String_Node_Str" + message.getClass());
}
}