protected override void OutputReturn(Expression expr) { var lie = expr.Expect <ListInitExpression> (ExpressionType.ListInit); var res = _function.Arguments.Last(); foreach (var init in lie.Initializers) { var assign = init.Arguments[0].Expect <MethodCallExpression> (ExpressionType.Call); var args = assign.Arguments; if (assign.Method.Name == "Buffer") { var buf = args[0].Expect <ParameterExpression> (ExpressionType.Parameter); var bufVar = _currentScope.FindLocalVar(buf.Name); _currentScope.CodeOut(Ast.Ass(Ast.ARef(bufVar, Expr(args[1])), Expr(args[2]))); } else { throw new ParseException("Invalid assign method."); } } }