public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2)
{
ContractUtils.RequiresNotNull(method, nameof(method));
ContractUtils.RequiresNotNull(arg0, nameof(arg0));
ContractUtils.RequiresNotNull(arg1, nameof(arg1));
ContractUtils.RequiresNotNull(arg2, nameof(arg2));
ParameterInfo[] pis = ValidateMethodAndGetParameters(null, method);
ValidateArgumentCount(method, ExpressionType.Call, 3, pis);
arg0 = ValidateOneArgument(method, ExpressionType.Call, arg0, pis[0], nameof(method), nameof(arg0));
arg1 = ValidateOneArgument(method, ExpressionType.Call, arg1, pis[1], nameof(method), nameof(arg1));
arg2 = ValidateOneArgument(method, ExpressionType.Call, arg2, pis[2], nameof(method), nameof(arg2));
return new MethodCallExpression3(method, arg0, arg1, arg2);
}