private bool ShouldDeferClosureProcessing(BlockExpression node)
{
// Defer closure processing if it's an argument in a generic method invocation
MethodInvocationExpression methodInvocationContext = node.ParentNode as MethodInvocationExpression;
if (methodInvocationContext == null) return false;
if (!methodInvocationContext.Arguments.Contains(node)) return false;
if (methodInvocationContext.Target.Entity is Ambiguous)
return ((Ambiguous) methodInvocationContext.Target.Entity).Any(GenericsServices.IsGenericMethod);
IMethod target = methodInvocationContext.Target.Entity as IMethod;
return (target != null && GenericsServices.IsGenericMethod(target));
}