anchor.diff:  
     // Emit statements. Returns true if code may fall-through.
     bool emitStatements(int depth) {
  -    int s = 1 + rand.nextInt(stmtLength);
  +    int s = 1 + rand.nextInt(numStatements);
       for (int i = 0; i < s; i++) {
         if (!emitStatement(depth)) {
           return false; // rest would be dead code
  
positive.code:     // Setup the types.
      localVars = <DartType>[];
      iterVars = <String>[];
      globalVars = fillTypes1();
      globalVars.addAll(DartType.allTypes); // always one each
      globalMethods = fillTypes2();
      classFields = fillTypes2(limit: 4);
      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];
      if (ffi) {
        List<List<DartType>> globalMethodsFfi = fillTypes2(isFfi: true);
        for (var m in globalMethodsFfi) {
          globalMethods.add(m);
          ffiStatus.add(true);
  
negative.code: // Version of DartFuzz. Increase this each time changes are made
  // to preserve the property that a given version of DartFuzz yields
  // the same fuzzed program for a deterministic random seed.
  const String version = '1.47';
  
  // Restriction on statements and expressions.
  const int stmtDepth = 1;
  const int exprDepth = 2;
  const int numStatements = 2;
  const int numGlobalVars = 4;
  const int numLocalVars = 4;
  const int numGlobalMethods = 4;
  const int numClassMethods = 3;
  const int numMethodParams = 4;
  const int numClasses = 4;
  
  // Naming conventions.
  const varName = 'var';
  