/// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is null.
 /// </summary>
 /// <typeparam name="TArg">The <see cref="Type">type</see> of parameter to test.</typeparam>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <param name="value">The <typeparamref name="TArg">value</typeparamref> that should cause the exception to be thrown.</param>
 /// <param name="message">A message to display if the assertion fails. This message can be seen in the unit test results.</param>
 /// <param name="parameters">An array of parameters to use when formatting <paramref name="message" />.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsOutOfRange`2']/example[2]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsOutOfRange <TArg, TException>(this Asserter assert, Expression <Action <TArg> > testMethod, TArg value, string message, params object[] parameters) where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <TArg, TException>(testMethod, value, message, parameters);
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is null.
 /// </summary>
 /// <typeparam name="TArg">The <see cref="Type">type</see> of parameter to test.</typeparam>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <param name="message">A message to display if the assertion fails. This message can be seen in the unit test results.</param>
 /// <param name="parameters">An array of parameters to use when formatting <paramref name="message" />.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsNull`2']/example[2]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsNull <TArg, TException>(this Asserter assert, Expression <Action <TArg> > testMethod, string message, params object[] parameters)
     where TArg : class
     where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <TArg, TException>(testMethod, null, message, parameters);
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is out of range.
 /// </summary>
 /// <typeparam name="TArg">The <see cref="Type">type</see> of parameter to test.</typeparam>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <param name="value">The <typeparamref name="TArg">value</typeparamref> that should cause the exception to be thrown.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsOutOfRange`2']/example[1]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsOutOfRange <TArg, TException>(this Asserter assert, Expression <Action <TArg> > testMethod, TArg value) where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <TArg, TException>(testMethod, value, ExceptionOfTNotThrown, typeof(TException));
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is null.
 /// </summary>
 /// <typeparam name="TArg">The <see cref="Type">type</see> of parameter to test.</typeparam>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsNull`2']/example[1]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsNull <TArg, TException>(this Asserter assert, Expression <Action <TArg> > testMethod)
     where TArg : class
     where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <TArg, TException>(testMethod, null, ExceptionOfTNotThrown, typeof(TException));
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is whitespace.
 /// </summary>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <param name="message">A message to display if the assertion fails. This message can be seen in the unit test results.</param>
 /// <param name="parameters">An array of parameters to use when formatting <paramref name="message" />.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsWhiteSpace`1']/example[2]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsWhiteSpace <TException>(this Asserter assert, Expression <Action <string> > testMethod, string message, params object[] parameters) where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <string, TException>(testMethod, " ", message, parameters);
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentException">argument exception</see> if the supplied parameter is whitespace.
 /// </summary>
 /// <typeparam name="TException">The <see cref="Type">type</see> of <see cref="ArgumentException"/> to expect.</typeparam>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsWhiteSpace`1']/example[1]" />
 public static ExceptionAsserter <TException> ThrowsIfArgumentIsWhiteSpace <TException>(this Asserter assert, Expression <Action <string> > testMethod) where TException : ArgumentException =>
 assert.ThrowsIfArgumentIs <string, TException>(testMethod, " ", ExceptionOfTNotThrown, typeof(TException));
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentNullException">argument null exception</see> if the supplied parameter is whitespace.
 /// </summary>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsWhiteSpace']/example[1]" />
 public static ExceptionAsserter <ArgumentNullException> ThrowsIfArgumentIsWhiteSpace(this Asserter assert, Expression <Action <string> > testMethod) =>
 assert.ThrowsIfArgumentIs <string, ArgumentNullException>(testMethod, " ", ExceptionOfTNotThrown, typeof(ArgumentNullException));
 /// <summary>
 /// Asserts the specified test method throws an <see cref="ArgumentNullException">argument null exception</see> if the supplied parameter is empty.
 /// </summary>
 /// <param name="assert">The extended <see cref="Asserter"/>.</param>
 /// <param name="testMethod">The <see cref="Expression{T}">expression</see> representing the <see cref="Action{T}">test method</see>.</param>
 /// <param name="message">A message to display if the assertion fails. This message can be seen in the unit test results.</param>
 /// <param name="parameters">An array of parameters to use when formatting <paramref name="message" />.</param>
 /// <returns>The <see cref="ExceptionAsserter{T}">asserted exception</see>.</returns>
 /// <include file="examples.xml" path="Types/Type[@name='ExceptionExtensions']/Member[@name='ThrowsIfArgumentIsEmpty']/example[2]" />
 public static ExceptionAsserter <ArgumentNullException> ThrowsIfArgumentIsEmpty(this Asserter assert, Expression <Action <string> > testMethod, string message, params object[] parameters) =>
 assert.ThrowsIfArgumentIs <string, ArgumentNullException>(testMethod, string.Empty, message, parameters);