* @param otherPlayer The <code>Player</code> wrt which the stance changes.
     * @param symmetric If true, change the otherPlayer stance as well.
     * @param cs A <code>ChangeSet</code> to update.
     * @return True if there was a change in stance at all.
     */
    public boolean csChangeStance(Stance stance, Player otherPlayer,
                                  boolean symmetric, ChangeSet cs) {
        ServerPlayer other = (ServerPlayer) otherPlayer;
        boolean change = false;
        Stance old = getStance(otherPlayer);

        if (old != stance) {
            int modifier = old.getTensionModifier(stance);
            setStance(otherPlayer, stance);
            if (modifier != 0) {
                cs.add(See.only(null).perhaps(other),
                    modifyTension(otherPlayer, modifier));
            }
            logger.info("Stance modification " + getName()
                + " " + old.toString() + " -> " + stance.toString()
                + " wrt " + otherPlayer.getName());
            this.addStanceChange(other);
            cs.addMessage(See.only(other),
                new ModelMessage(ModelMessage.MessageType.FOREIGN_DIPLOMACY,
                    "model.diplomacy." + stance + ".declared", this)
                .addStringTemplate("%nation%", getNationName()));
            cs.addStance(See.only(this), this, stance, otherPlayer);
            cs.addStance(See.only(other), this, stance, otherPlayer);
            change = true;
        }
        if (symmetric && (old = otherPlayer.getStance(this)) != stance) {
            int modifier = old.getTensionModifier(stance);
            otherPlayer.setStance(this, stance);
            if (modifier != 0) {
                cs.add(See.only(null).perhaps(this),
                    otherPlayer.modifyTension(this, modifier));
            }
            logger.info("Stance modification " + otherPlayer.getName()
                + " " + old.toString() + " -> " + stance.toString()
                + " wrt " + getName() + " (symmetric)");
            other.addStanceChange(this);
            cs.addMessage(See.only(this),
                new ModelMessage(ModelMessage.MessageType.FOREIGN_DIPLOMACY,
                    "model.diplomacy." + stance + ".declared", otherPlayer)
                .addStringTemplate("%nation%", otherPlayer.getNationName()));
            cs.addStance(See.only(this), otherPlayer, stance, this);
            cs.addStance(See.only(other), otherPlayer, stance, this);
            change = true;
        }

        return change;
    }