anchor.diff:    // Types of global variables.
     List<DartType> globalVars;
   
  +  // Names of currenty active iterator variables.
  +  // These are tracked to avoid modifications within the loop body,
  +  // which can lead to infinite loops.
  +  List<String> iterVars;
  +
     // Prototypes of all global methods (first element is return type).
     List<List<DartType>> globalMethods;
   
  
positive.code:         if (tp == proto[i]) choices.add('$paramName$i');
        }
      }
      // Then pick one.
      assert(choices.length > 0);
      emit('${choices[rand.nextInt(choices.length)]}');
    }
  
    void emitSubscriptedVar(int depth, DartType tp) {
      if (tp == DartType.INT) {
        emitScalarVar(DartType.INT_LIST);
        emit('[');
        emitExpr(depth + 1, DartType.INT);
        emit(']');
      } else if (tp == DartType.STRING) {
        emitScalarVar(DartType.INT_STRING_MAP);
        emit('[');
        emitExpr(depth + 1, DartType.INT);
        emit(']');
      } else {
        emitScalarVar(tp); // resort to scalar
      }
    }
  
    void emitVar(int depth, DartType tp) {
      switch (rand.nextInt(2)) {
        case 0:
          emitScalarVar(tp);
          break;
        default:
          emitSubscriptedVar(depth, tp);
          break;
      }
    }
  
negative.code:     emitLn('while (--$localName$i > 0) {');
      indent += 2;
      nest++;
      iterVars.add("$localName$i");
      localVars.add(DartType.INT);
      emitStatements(depth + 1);
      localVars.removeLast();
      iterVars.removeLast();
      nest--;
      indent -= 2;
      emitLn('}');
  