public void declareIndependence() {
        if (!requireOurTurn()) return;
        Game game = freeColClient.getGame();
        Player player = freeColClient.getMyPlayer();

        // Check for adequate support.
        Event event = getSpecification()
            .getEvent("model.event.declareIndependence");
        for (Limit limit : event.getLimits()) {
            if (!limit.evaluate(player)) {
                gui.showInformationMessage(StringTemplate
                    .template(limit.getDescriptionKey())
                    .addAmount("%limit%",
                        limit.getRightHandSide().getValue(game)));
                return;
            }
        }
        if (player.getNewLandName() == null) {
            // Can only happen in debug mode.
            return;
        }

        // Confirm intention, and collect nation+country names.
        List<String> names = gui.showConfirmDeclarationDialog();
        if (names == null
            || names.get(0) == null || names.get(0).length() == 0
            || names.get(1) == null || names.get(1).length() == 0) {
            // Empty name => user cancelled.
            return;
        }

        // Ask server.
        String nationName = names.get(0);
        String countryName = names.get(1);
        if (askServer().declareIndependence(nationName, countryName)
            && player.getPlayerType() == PlayerType.REBEL) {
            gui.showDeclarationDialog();
            freeColClient.updateActions();
            nextModelMessage();
        }
    }