public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
{
ContractUtils.RequiresNotNull(method, nameof(method));
ContractUtils.RequiresNotNull(arg0, nameof(arg0));
ContractUtils.RequiresNotNull(arg1, nameof(arg1));
ContractUtils.RequiresNotNull(arg2, nameof(arg2));
ContractUtils.RequiresNotNull(arg3, nameof(arg3));
ParameterInfo[] pis = ValidateMethodAndGetParameters(null, method);
ValidateArgumentCount(method, ExpressionType.Call, 4, 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));
arg3 = ValidateOneArgument(method, ExpressionType.Call, arg3, pis[3], nameof(method), nameof(arg3));
return new MethodCallExpression4(method, arg0, arg1, arg2, arg3);
}