public virtual void VisitLambdaExpression(LambdaExpression lambdaExpression)
		{
			DebugExpression(lambdaExpression);
			StartNode(lambdaExpression);
			var oldRef = currentMethodReference;
			currentMethodReference = new object();
			var builder = lambdaExpression.Annotation<MethodDebugInfoBuilder>();
			if (builder != null)
				builder.StartPosition = writer.GetLocation();
			if (lambdaExpression.IsAsync) {
				WriteKeyword(LambdaExpression.AsyncModifierRole);
				Space();
			}
			if (LambdaNeedsParenthesis(lambdaExpression)) {
				WriteCommaSeparatedListInParenthesis(lambdaExpression.Parameters, policy.SpaceWithinMethodDeclarationParentheses, CodeBracesRangeFlags.Parentheses);
			} else {
				lambdaExpression.Parameters.Single().AcceptVisitor(this);
			}
			Space();
			WriteToken(LambdaExpression.ArrowRole, BoxedTextColor.Operator);
			Space();
			lambdaExpression.Body.AcceptVisitor(this);
			if (builder != null && builder.EndPosition == null)
				builder.EndPosition = writer.GetLocation();
			currentMethodReference = oldRef;
			EndNode(lambdaExpression);
		}