anchor.diff:      subGraph = new SubGraph(graph.entry, graph.exit);
       beginGraph(graph);
       visitBasicBlock(graph.entry);
  -    if (!delayedVariablesDeclaration.isEmpty()) {
  +    if (!delayedVariableDeclarations.isEmpty()) {
         addIndented("var ");
  -      buffer.add(Strings.join(delayedVariablesDeclaration, ', '));
  +      buffer.add(Strings.join(
  +          new List<String>.from(delayedVariableDeclarations), ', '));
         buffer.add(";\n");
       }
       endGraph(graph);
  
positive.code:   void declareVariable(String variableName) {
      if (isGeneratingExpression()) {
        if (generationState == STATE_FIRST_DECLARATION) {
          generationState = STATE_DECLARATION;
          if (!isVariableDeclared(variableName)) {
            declaredVariables.add(variableName);
            buffer.add("var ");
          }
        } else if (!isVariableDeclared(variableName)) {
          if (!isGeneratingDeclaration()) {
            delayedVariablesDeclaration.add(variableName);
          } else {
            declaredVariables.add(variableName);
          }
  
negative.code:                    this.parameters,
                     this.parameterNames)
      : declaredVariables = new Set<String>(),
        delayedVariableDeclarations = new Set<String>(),
        buffer = new StringBuffer(),
        generateAtUseSite = new Set<HInstruction>(),
        logicalOperations = new Set<HInstruction>(),
  