private static void ValidateAccessor(Expression?instance, MethodInfo method, ParameterInfo[] indexes, ref ReadOnlyCollection <Expression> arguments, string?paramName)
{
ContractUtils.RequiresNotNull(arguments, nameof(arguments));
ValidateMethodInfo(method, nameof(method));
if ((method.CallingConvention & CallingConventions.VarArgs) != 0)
{
throw Error.AccessorsCannotHaveVarArgs(paramName);
}
if (method.IsStatic)
{
if (instance != null)
{
throw Error.OnlyStaticPropertiesHaveNullInstance(nameof(instance));
}
}
else
{
if (instance == null)
{
throw Error.OnlyStaticPropertiesHaveNullInstance(nameof(instance));
}
ExpressionUtils.RequiresCanRead(instance, nameof(instance));
ValidateCallInstanceType(instance.Type, method);
}
ValidateAccessorArgumentTypes(method, indexes, ref arguments, paramName);
}