private bool ProcessMetaMethodInvocation(MethodInvocationExpression node, bool resolvedArgs)
{
var targetEntity = node.Target.Entity;
if (targetEntity == null) return false;
if (!IsOrContainMetaMethod(targetEntity)) return false;
var arguments = GetMetaMethodInvocationArguments(node);
var argumentTypes = MethodResolver.GetArgumentTypes(arguments);
var resolver = new MethodResolver(argumentTypes);
var method = resolver.ResolveMethod(EnumerateMetaMethods(targetEntity));
if (method == null) return false;
if (ShouldResolveArgsOf(method))
{
Visit(node.Arguments);
InvokeMetaMethod(node, method, GetMetaMethodInvocationArguments(node));
return true;
}
InvokeMetaMethod(node, method, arguments);
return true;
}