anchor.diff:              .callFn(visitAll(ast.args, _Mode.Expression)));
     }
   
  -  dynamic visitIfNull(compiler_ast.IfNull ast, dynamic context) {
  -    _visitingRoot = false;
  -    _Mode mode = context;
  +  dynamic visitIfNull(compiler_ast.IfNull ast, _Mode mode) {
  +    _visitingRoot = false;
       o.Expression value = ast.condition.visit(this, _Mode.Expression);
       return convertToStatementIfNeeded(
           mode, value.ifNull(ast.nullExp.visit(this, _Mode.Expression)));
     }
   
  -  dynamic visitImplicitReceiver(
  -      compiler_ast.ImplicitReceiver ast, dynamic context) {
  -    _visitingRoot = false;
  -    _Mode mode = context;
  +  dynamic visitImplicitReceiver(compiler_ast.ImplicitReceiver ast, _Mode mode) {
  +    _visitingRoot = false;
       ensureExpressionMode(mode, ast);
       return IMPLICIT_RECEIVER;
     }
  
positive.code:             .key(ast.key.visit(this, _Mode.Expression)));
    }
  
    dynamic visitKeyedWrite(compiler_ast.KeyedWrite ast, dynamic context) {
      _visitingRoot = false;
      _Mode mode = context;
      o.Expression obj = ast.obj.visit(this, _Mode.Expression);
      o.Expression key = ast.key.visit(this, _Mode.Expression);
      o.Expression value = ast.value.visit(this, _Mode.Expression);
      return convertToStatementIfNeeded(mode, obj.key(key).set(value));
    }
  
    dynamic visitLiteralArray(compiler_ast.LiteralArray ast, dynamic context) {
      final isRootExpression = _visitingRoot;
      _visitingRoot = false;
      _Mode mode = context;
      return convertToStatementIfNeeded(
        mode,
        _nameResolver.createLiteralList(
  
negative.code:     return convertToStatementIfNeeded(mode, result);
    }
  
    dynamic visitPropertyWrite(compiler_ast.PropertyWrite ast, _Mode mode) {
      _visitingRoot = false;
      o.Expression receiver = ast.receiver.visit(this, _Mode.Expression);
      if (identical(receiver, IMPLICIT_RECEIVER)) {
        var varExpr = _nameResolver.getLocal(ast.name);
  