Destination getDefaultDestination() {
        final Unit carrier = getUnit();
        PathNode path = null;

        // If in Europe, stay in Europe
        if (carrier.getLocation() instanceof Europe) {
            return new Destination();
        }

        // Otherwise should be on the map
        if (carrier.getTile() == null) {
            throw new IllegalStateException("Unit not on the map: "
                                            + carrier.getId());
        }

        // Already at a settlement
        if (carrier.getSettlement() != null) {
            return new Destination();
        }

        // Try nearest colony
        if ((path = carrier.findOurNearestOtherSettlement()) != null) {
            return new Destination(false, path);
        }

        // Try Europe
        if (carrier.isNaval() && carrier.getOwner().canMoveToEurope()) {
            if (carrier.canMoveToHighSeas()) {
                return new Destination(true, null);
            }
            if ((path = findPathToEurope(carrier)) != null) {
                return new Destination(true, path);
            }
        }

        // Can fail intermittantly.  For example: up river and blocked in.
        logger.warning(tag + " could not get default destination: " + carrier);
        return null;
    }