anchor.diff:      globalMethods = fillTypes2();
       classFields = fillTypes2(limit: 8);
       classMethods = fillTypes3(classFields.length);
  +    virtualClassMethods = <Map<int, List<int>>>[];
       classParents = <int>[];
       // Setup optional ffi methods and types.
       final ffiStatus = <bool>[for (final _ in globalMethods) false];
  
positive.code: 
    // Prototypes of all methods over all classes (first element is return type).
    List<List<List<DartType>>> classMethods;
  
    // Parent class indices for all classes.
    List<int> classParents;
  
negative.code: 
      // Call each global method once.
      for (int i = 0; i < globalMethods.length; i++) {
        emitTryCatchFinally(() {
          emitCall(1, "$methodName${i}", globalMethods[i]);
        }, () {
          emitLn("print('$methodName$i throws');");
        });
      }
  
      // Call each class method once.
      for (int i = 0; i < classMethods.length; i++) {
        for (int j = 0; j < classMethods[i].length; j++) {
          emitTryCatchFinally(() {
            emitCall(1, "X${i}().$methodName${i}_${j}", classMethods[i][j]);
          }, () {
            emitLn("print('X${i}().$methodName${i}_${j}() throws');");
          });
        }
        // Call each virtual class method once.
        int parentClass = classParents[i];
        while (parentClass >= 0) {
          if (virtualClassMethods[i].containsKey(parentClass)) {
            for (int j = 0; j < virtualClassMethods[i][parentClass].length; j++) {
              emitTryCatchFinally(() {
                emitCall(1, "X${i}().$methodName${parentClass}_${j}",
                    classMethods[parentClass][j]);
              }, () {
                emitLn(
                    "print('X${i}().$methodName${parentClass}_${j}() throws');");
              });
            }
          }
          parentClass = classParents[parentClass];
        }
      }
  
      emitTryCatchFinally(() {
        emit('X${classFields.length - 1}().run()');
      }, () {
        emitLn("print('X${classFields.length - 1}().run() throws');");
      }, finallyBody: () {
        emitLn("print('", newline: false);
        for (int i = 0; i < globalVars.length; i++) {
          emit('\$$varName$i\\n');
        }
        emit("');", newline: true);
      });
      indent -= 2;
      emitLn('}');
    }
  