Program: 55603
Project: 55603
Buggy source:
private void openMatch(String id,String name,NetworkClient client) throws IllegalStateException, InterruptedException {
  BufferingPacketReceiver<ArrayOfMatchInfosPacket> matchesReceiver=new BufferingPacketReceiver<>();
  assertEquals(0,matchesReceiver.popBufferedPackets().size());
  client.logIn(id,name,matchesReceiver);
  Thread.sleep(50);
  List<ArrayOfMatchInfosPacket> arrayOfMatches=matchesReceiver.popBufferedPackets();
  assertEquals(1,arrayOfMatches.size());
  assertEquals(0,arrayOfMatches.get(0).getMatches().length);
  BufferingPacketReceiver<MatchInfoUpdatePacket> matchUpdateListener=new BufferingPacketReceiver<>();
  final String matchName="String_Node_Str";
  final byte maxPlayers=(byte)5;
  final MapInfoPacket mapInfo=new MapInfoPacket("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str",5);
  client.openNewMatch(matchName,maxPlayers,mapInfo,-4712L,null,matchUpdateListener,null);
  Thread.sleep(100);
  List<MatchInfoUpdatePacket> matches=matchUpdateListener.popBufferedPackets();
  assertEquals(1,matches.size());
  MatchInfoPacket match=matches.get(0).getMatchInfo();
  assertEquals(matchName,match.getMatchName());
  assertEquals(maxPlayers,match.getMaxPlayers());
  assertEquals(mapInfo,match.getMapInfo());
  assertFalse(match.getPlayers()[0].isReady());
  client.setReadyState(true);
  Thread.sleep(150);
  matches=matchUpdateListener.popBufferedPackets();
  assertEquals(1,matches.size());
  match=matches.get(0).getMatchInfo();
  assertEquals(matchName,match.getMatchName());
  assertEquals(maxPlayers,match.getMaxPlayers());
  assertEquals(mapInfo,match.getMapInfo());
  assertTrue(match.getPlayers()[0].isReady());
}

Fixed version (ground truth):
private void openMatch(String id,String name,NetworkClient client) throws IllegalStateException, InterruptedException {
  BufferingPacketReceiver<ArrayOfMatchInfosPacket> matchesReceiver=new BufferingPacketReceiver<>();
  assertEquals(0,matchesReceiver.popBufferedPackets().size());
  client.logIn(id,name,matchesReceiver);
  Thread.sleep(50L);
  List<ArrayOfMatchInfosPacket> arrayOfMatches=matchesReceiver.popBufferedPackets();
  assertEquals(1,arrayOfMatches.size());
  assertEquals(0,arrayOfMatches.get(0).getMatches().length);
  BufferingPacketReceiver<MatchInfoUpdatePacket> matchUpdateListener=new BufferingPacketReceiver<>();
  final String matchName="String_Node_Str";
  final byte maxPlayers=(byte)5;
  final MapInfoPacket mapInfo=new MapInfoPacket("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str",5);
  client.openNewMatch(matchName,maxPlayers,mapInfo,-4712L,null,matchUpdateListener,null);
  Thread.sleep(100L);
  List<MatchInfoUpdatePacket> matches=matchUpdateListener.popBufferedPackets();
  assertEquals(1,matches.size());
  MatchInfoPacket match=matches.get(0).getMatchInfo();
  assertEquals(matchName,match.getMatchName());
  assertEquals(maxPlayers,match.getMaxPlayers());
  assertEquals(mapInfo,match.getMapInfo());
  assertFalse(match.getPlayers()[0].isReady());
  client.setReadyState(true);
  Thread.sleep(150L);
  matches=matchUpdateListener.popBufferedPackets();
  assertEquals(1,matches.size());
  match=matches.get(0).getMatchInfo();
  assertEquals(matchName,match.getMatchName());
  assertEquals(maxPlayers,match.getMaxPlayers());
  assertEquals(mapInfo,match.getMapInfo());
  assertTrue(match.getPlayers()[0].isReady());
}