private void checkDesyncAction(final Game serverGame,
                                   final Player serverPlayer) {
        Game game = freeColClient.getGame();
        boolean problemDetected = false;
        Map serverMap = serverGame.getMap();
        for (Tile t : serverMap.getAllTiles()) {
            if (serverPlayer.canSee(t)) {
                Iterator<Unit> unitIterator = t.getUnitIterator();
                while (unitIterator.hasNext()) {
                    Unit u = unitIterator.next();
                    if (u.isVisibleTo(serverPlayer)) {
                        if (game.getFreeColGameObject(u.getId(), Unit.class) == null) {
                            System.out.println("Desynchronization detected: Unit missing on client-side");
                            System.out.println(Messages.message(Messages.getLabel(u))
                                + "(" + u.getId() + "). Position: "
                                + u.getTile().getPosition());
                            try {
                                System.out.println("Possible unit on client-side: "
                                    + game.getMap().getTile(u.getTile().getPosition())
                                    .getFirstUnit().getId());
                            } catch (NullPointerException npe) {
                            }
                            System.out.println();
                            problemDetected = true;
                        } else {
                            Unit clientSideUnit = game.getFreeColGameObject(u.getId(), Unit.class);
                            if (clientSideUnit.getTile() != null
                                && !clientSideUnit.getTile().getId().equals(u.getTile().getId())) {
                                System.out.println("Unsynchronization detected: Unit located on different tiles");
                                System.out.println("Server: " + Messages.message(Messages.getLabel(u))
                                    + "(" + u.getId() + "). Position: "
                                    + u.getTile().getPosition());
                                System.out.println("Client: "
                                    + Messages.message(Messages.getLabel(clientSideUnit))
                                    + "(" + clientSideUnit.getId() + "). Position: "
                                    + clientSideUnit.getTile().getPosition());
                                System.out.println();
                                problemDetected = true;
                            }
                        }
                    }
                }
            }
        }

        gui.showInformationMessage((problemDetected)
            ? "menuBar.debug.compareMaps.problem"
            : "menuBar.debug.compareMaps.checkComplete");
    }