anchor.diff:          }, parameters.length, start: 1));
     }
   
  +  void disableRecursionScope(Function callback) {
  +    final originalState = recursionAllowed;
  +    recursionAllowed = false;
  +    callback();
  +    recursionAllowed = originalState;
  +  }
  +
     void emitRecursionBaseCase() {
       fuzzer.emitIfStatement(() {
         fuzzer.emit("$recursionDepthParamName >= ");
         fuzzer.emitSmallPositiveInt();
       }, () {
  -      fuzzer.emitReturn(terminal: true);
  +      // Temporarily set recursionAllowed to false so that we don't have a
  +      // recursive call in the return statement of the base case.
  +      disableRecursionScope(fuzzer.emitReturn);
         return false;
       });
     }
  
positive.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.76';
  
  // Restriction on statements and expressions.
  const int stmtDepth = 1;
  
negative.code:   void emitFunctionBody() {
      fuzzer.emitBraceWrapped(() {
        assert(fuzzer.localVars.isEmpty);
        if (recursionAllowed) {
          emitRecursionBaseCase();
        }
        if (fuzzer.emitStatements(0)) {
          fuzzer.emitReturn();
        }
  