public void replaceSource(FreeColGameObjectType oldSource,
                              FreeColGameObjectType newSource) {
        for (Ability ability : getAbilities(this)) {
            if (oldSource == null || ability.getSource() == oldSource) {
                removeAbility(this, ability);
                Ability newAbility = new Ability(ability);
                newAbility.setSource(newSource);
                addAbility(this, newAbility);
            }
        }
        for (Modifier modifier : getModifiers(this)) {
            if (oldSource == null || modifier.getSource() == oldSource) {
                removeModifier(this, modifier);
                Modifier newModifier = new Modifier(modifier);
                newModifier.setSource(newSource);
                addModifier(this, newModifier);
            }
        }
    }