void ReplaceEndInvokeTargetByGetAsyncDelegate(MethodInvocationExpression node)
{
Expression asyncResult = node.Arguments[node.Arguments.Count-1];
MemberReferenceExpression endInvoke = (MemberReferenceExpression)node.Target;
IType callableType = ((IMember)endInvoke.Entity).DeclaringType;
endInvoke.Target = CodeBuilder.CreateCast(callableType,
CodeBuilder.CreateMethodInvocation(
CodeBuilder.CreateCast(_asyncResultType, asyncResult.CloneNode()),
_asyncResultTypeAsyncDelegateGetter));
}