anchor.diff:    }
   }
   
  +/// Collect 'return' jumps.
  +///
  +/// A return jump is one that targets the return continuation of a function.
  +/// Thus, returns from inside try/finally are not return jumps because they are
  +/// intercepted by a block that contains the finally handler code.
  +class ReturnJumpCollector extends JumpCollector {
  +  bool isEmpty = true;
  +  ir.Continuation get continuation => _continuation;
  +  Environment environment = null;
  +
  +  /// Construct a return jump collector for a given return continuation.
  +  ReturnJumpCollector(ir.Continuation continuation) : super.retrn(continuation);
  +
  +  void addJump(IrBuilder builder,
  +      [ir.Primitive value, SourceInformation sourceInformation]) {
  +    isEmpty = false;
  +    builder.add(new ir.InvokeContinuation(continuation, <ir.Primitive>[value],
  +        isEscapingTry: isEscapingTry,
  +        sourceInformation: sourceInformation));
  +    builder._current = null;
  +  }
  +}
  +
   /// Function for building a node in the context of the current builder.
   typedef ir.Node BuildFunction(node);
   
  
positive.code:       }
        builder.state.breakCollectors.forEach(restoreJump);
        builder.state.continueCollectors.forEach(restoreJump);
      }
  
      List<ir.Parameter> buildCatch(IrBuilder builder,
  
negative.code:   /// the environment.
    final Map<Local, ClosureLocation> boxedVariables = {};
  
    IrBuilderSharedState(this.program, this.constants, this.currentElement) {
      returnCollector = new ReturnJumpCollector(returnContinuation);
    }
  }
  
  class ThisParameterLocal implements Local {
  