public UnitType getBestDefenderType() {
        UnitType bestDefender = null;
        for (UnitType unitType : getSpecification().getUnitTypeList()) {
            if (unitType.getDefence() > 0
                && (bestDefender == null
                    || bestDefender.getDefence() < unitType.getDefence())
                && !unitType.hasAbility(Ability.NAVAL_UNIT)
                && unitType.isAvailableTo(getOwner())) {
                bestDefender = unitType;
            }
        }
        return bestDefender;
    }