private float addModifier(Modifier modifier, UnitType unitType, float result) {
        FreeColObject source = modifier.getSource();
        String sourceName;
        if (source == null) {
            sourceName = "???";
        } else {
            sourceName = Messages.getName(source);
            if (unitType != null && modifier.hasScope()) {
                for (Scope scope : modifier.getScopes()) {
                    if (scope.appliesTo(unitType)) {
                        sourceName += " (" + Messages.message(unitType.getNameKey()) + ")";
                    }
                }
            }
        }
        float value = modifier.getValue(turn);
        if (value == 0) {
            return result;
        }
        String[] bonus = getModifierStrings(value, modifier.getType());
        add(new JLabel(sourceName), "newline");
        add(new JLabel(bonus[0] + bonus[1]));
        if (bonus[2] != null) {
            add(new JLabel(bonus[2]));
        }
        return modifier.applyTo(result, turn);
    }