* @param unit The <code>Unit</code> making the demands.
     * @param colony The <code>Colony</code> that is demanded of.
     * @param goods The <code>Goods</code> being demanded.
     * @param gold The amount of gold being demanded.
     * @return An <code>Element</code> encapsulating this action.
     */
    public Element indianDemand(final ServerPlayer serverPlayer, Unit unit,
                                Colony colony, Goods goods, int gold) {
        ServerPlayer victim = (ServerPlayer) colony.getOwner();
        int difficulty = getGame().getSpecification()
            .getIntegerOption("model.option.nativeDemands").getValue();
        ChangeSet cs = new ChangeSet();

        DOMMessage reply = askTimeout(victim,
            new IndianDemandMessage(unit, colony, goods, gold));
        boolean result = (reply instanceof IndianDemandMessage)
            ? ((IndianDemandMessage)reply).getResult()
            : false;
        logger.info(serverPlayer.getName() + " unit " + unit
            + " demands " + goods + " goods and " + gold + " gold "
            + " from " + colony.getName() + " accepted: " + result);

        IndianDemandMessage message = new IndianDemandMessage(unit, colony,
                                                              goods, gold);
        message.setResult(result);
        cs.add(See.only(serverPlayer), ChangePriority.CHANGE_NORMAL, message);
        if (result) {
            if (goods != null) {
                GoodsContainer colonyContainer = colony.getGoodsContainer();
                colonyContainer.saveState();
                GoodsContainer unitContainer = unit.getGoodsContainer();
                unitContainer.saveState();
                moveGoods(goods, unit);
                cs.add(See.only(victim), colonyContainer);
                //cs.add(See.only(serverPlayer), unitContainer);
            }
            if (gold > 0) {
                victim.modifyGold(-gold);
                serverPlayer.modifyGold(gold);
                cs.addPartial(See.only(victim), victim, "gold");
                //cs.addPartial(See.only(serverPlayer), serverPlayer, "gold");
            }
            cs.add(See.only(null).perhaps(victim),
                serverPlayer.modifyTension(victim, -(5 - difficulty) * 50));
        }

        sendToOthers(serverPlayer, cs);
        return cs.build(serverPlayer);
    }