@Override
 public Collection<ResolutionRule> transform(final Collection<ResolutionRule> rules) {
   final Collection<ResolutionRule> result = new ArrayList<ResolutionRule>(rules.size());
   for (ResolutionRule rule : rules) {
     final String function =
         rule.getFunction().getFunction().getFunctionDefinition().getShortName();
     final Action action = _functionTransformations.get(function);
     if (action == null) {
       s_logger.debug("Function {} has no transformation rules", function);
       result.add(rule);
     } else {
       s_logger.debug("Applying transformation rules for function {}", function);
       action.apply(rule, result);
     }
   }
   return result;
 }
 @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);
 }