protected virtual void ProcessMethodInvocation(MethodInvocationExpression node, IMethod method)
{
if (ResolvedAsExtension(node)) PostNormalizeExtensionInvocation(node, method);
var targetMethod = InferGenericMethodInvocation(node, method);
if (targetMethod == null) return;
if (!CheckParameters(targetMethod.CallableType, node.Arguments, false))
{
if (!ResolvedAsExtension(node) && TryToProcessAsExtensionInvocation(node)) return;
if (ProcessMethodInvocationWithInvalidParameters(node, targetMethod)) return;
AssertParameters(node, targetMethod, node.Arguments);
}
AssertTargetContext(node.Target, targetMethod);
NamedArgumentsNotAllowed(node);
EnsureRelatedNodeWasVisited(node.Target, targetMethod);
BindExpressionType(node, GetInferredType(targetMethod));
ApplyBuiltinMethodTypeInference(node, targetMethod);
}