anchor.diff:        builder.build(node.parameters, body);
         _computeLiveness(builder.blocks);
         Map<Variable, Variable> subst =
  -          _computeRegisterAllocation(builder.blocks);
  +          _computeRegisterAllocation(builder.blocks, node.parameters);
         new SubstituteVariables(subst).apply(node);
       });
     }
  
positive.code:   List<Variable> variables = interference.keys.toList();
    variables.sort((x, y) => interference[y].length - interference[x].length);
  
    Map<Local, List<Variable>> registers = <Local, List<Variable>>{};
    Map<Variable, Variable> subst = <Variable, Variable>{};
  
    for (Variable v1 in variables) {
      List<Variable> register = registers[group(v1)];
  
      // Optimization: For the first variable in a group, allocate a new color
  
negative.code:   // live after the assignment (if it came from the same source variable).
    for (Block block in blocks) {
      // Group the liveOut set by source variable.
      Map<String, Set<Variable>> liveOut = <String, Set<Variable>>{};
      for (Variable variable in block.liveOut) {
        liveOut.putIfAbsent(
            group(variable),
  