//1. TODO: check for replacement effects
//2. We need to check both source.getId() and source.getSourceId()
// first for protection from spells or abilities (e.g. protection from colored spells, r1753)
// second for protection from sources (e.g. protection from artifacts + equip ability)
if (!isNotTarget()) {
if (!permanent.canBeTargetedBy(game.getObject(source.getId()), controllerId, game) ||
!permanent.canBeTargetedBy(game.getObject(source.getSourceId()), controllerId, game)) {
return false;
}
}
return filter.match(permanent, source.getSourceId(), controllerId, game);