@Override protected void apply( final ResolutionRule originalRule, final Collection<ResolutionRule> output) { ParameterizedFunction function = originalRule.getFunction(); if (_parameters != null) { function = new ParameterizedFunction(originalRule.getFunction().getFunction(), _parameters); } final ComputationTargetFilter computationTargetFilter; if (_computationTargetFilter != null) { computationTargetFilter = _computationTargetFilter; } else { computationTargetFilter = originalRule.getComputationTargetFilter(); } int priority = originalRule.getPriority(); if (_priorityAdjustment != null) { priority += _priorityAdjustment; } final ResolutionRule replacement = new ResolutionRule(function, computationTargetFilter, priority); s_logger.debug("Publishing {} in place of {}", replacement, originalRule); output.add(replacement); }