* @param unit The <code>Unit</code> to update.
     * @return An <code>Element</code> encapsulating this action.
     */
    public Element updateCurrentStop(ServerPlayer serverPlayer, Unit unit) {
        // Check if there is a valid current stop?
        int current = unit.validateCurrentStop();
        if (current < 0) { // No valid stop
            unit.setTradeRoute(null);
            return new ChangeSet().add(See.only(serverPlayer), unit)
                .build(serverPlayer);
        }

        List<Stop> stops = unit.getTradeRoute().getStops();
        int next = current;
        for (;;) {
            if (++next >= stops.size()) next = 0;
            if (next == current) return null; // No work at any stop, stay put.
            Stop nextStop = stops.get(next);
            if (((ServerUnit) unit).hasWorkAtStop(nextStop)) break;
            logger.finest("Unit " + unit
                + " in trade route " + unit.getTradeRoute().getName()
                + " found no work at stop: " + (FreeColGameObject) nextStop.getLocation());
        }

        // Next is the updated stop.
        // Could do just a partial update of currentStop if we did not
        // also need to set the unit destination.
        unit.setCurrentStop(next);

        // Others can not see a stop change.
        return new ChangeSet().add(See.only(serverPlayer), unit)
            .build(serverPlayer);
    }