anchor.diff:      state.breakCollectors.add(breakCollector);
       state.continueCollectors.add(continueCollector);
   
  -    IrBuilder bodyBuilder = condBuilder.makeDelimitedBuilder();
  -
  -    bodyBuilder._enterForLoopBody(closureScope, loopVariables);
  -
  -    buildBody(bodyBuilder);
  +    IrBuilder outerBodyBuilder = condBuilder.makeDelimitedBuilder();
  +    outerBodyBuilder._enterForLoopBody(closureScope, loopVariables);
  +
  +    IrBuilder innerBodyBuilder = outerBodyBuilder.makeDelimitedBuilder();
  +
  +    buildBody(innerBodyBuilder);
       assert(state.breakCollectors.last == breakCollector);
       assert(state.continueCollectors.last == continueCollector);
       state.breakCollectors.removeLast();
  
positive.code:       // If there are continues in the body, we need a named continue
        // continuation as a join point.
        continueContinuation = new ir.Continuation(updateBuilder._parameters);
        if (bodyBuilder.isOpen) continueCollector.addJump(bodyBuilder);
        invokeFullJoin(continueContinuation, continueCollector);
      }
      ir.Continuation loopContinuation =
  
negative.code:     // is instead placed just outside the body of the body continuation.
      bool hasContinues = !continueCollector.isEmpty;
      IrBuilder updateBuilder = hasContinues
          ? outerBodyBuilder.makeRecursiveBuilder()
          : innerBodyBuilder;
      updateBuilder._enterForLoopUpdate(closureScope, loopVariables);
      buildUpdate(updateBuilder);
  
  