anchor.diff:    }
   
     String allocateTemporary() {
  +    while (!freeTemporaryNames.isEmpty()) {
  +      String name = freeTemporaryNames.removeLast();
  +      if (!usedNames.contains(name)) return name;
  +    }
       String name = 't${temporaryIndex++}';
       while (usedNames.contains(name)) name = 't${temporaryIndex++}';
       return name;
  
positive.code:   void freeName(HInstruction instruction) {
      String ownName = names.ownName[instruction];
      if (ownName != null) {
        usedNames.remove(ownName);
      }
    }
  
negative.code:   final VariableNames names;
    final Set<String> usedNames;
    final Map<Element, String> parameterNames;
    final List<String> freeTemporaryNames;
    int temporaryIndex = 0;
  
    VariableNamer(LiveEnvironment environment, this.names, this.parameterNames)
      : usedNames = new Set<String>(),
        freeTemporaryNames = new List<String>() {
      // [VariableNames.swapTemp] is being used when there is a cycle
      // in a copy handler. Therefore we make sure no one will use it.
      usedNames.add(names.swapTemp);
  