anchor.diff:      }
     }
   
  +  void emitTryCatchFinally(Function tryBody, Function catchBody,
  +      {Function finallyBody}) {
  +    emitLn('try {');
  +    indent += 2;
  +    emitLn("", newline: false);
  +    tryBody();
  +    emit(";", newline: true);
  +    indent -= 2;
  +    emitLn('} catch (e, st) {');
  +    indent += 2;
  +    catchBody();
  +    indent -= 2;
  +    if (finallyBody != null) {
  +      emitLn('} finally {');
  +      indent += 2;
  +      finallyBody();
  +      indent -= 2;
  +    }
  +    emitLn('}');
  +  }
  +
     void emitMain() {
       emitLn('main() {');
       indent += 2;
  
positive.code:   void emitVirtualMethods() {
      final currentClassTmp = currentClass;
      int parentClass = classParents[currentClass];
      // Chase randomly up in class hierarchy.
      while (parentClass >= 0) {
        for (int j = 0, n = classMethods[parentClass].length; j < n; j++) {
          if (rand.nextInt(8) == 0) {
            currentClass = parentClass;
            currentMethod = j;
            emitMethod('$methodName${parentClass}_', j,
                classMethods[parentClass][j], false);
            currentMethod = null;
            currentClass = null;
          }
  
negative.code:   // Types of global variables.
    List<DartType> globalVars;
  
    // Names of currently active iterator variables.
    // These are tracked to avoid modifications within the loop body,
    // which can lead to infinite loops.
    List<String> iterVars;
  