/// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop with thread-local data in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TLocal">The type of the thread-local data.</typeparam>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="localInit">The function delegate that returns the initial state of the local data for each task.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <param name="localFinally">The delegate that performs a final action on the local state of each task.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For <TLocal>(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Func <TLocal> localInit, Func <int, ParallelLoopState, TLocal, TLocal> body, Action <TLocal> localFinally) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, parallelOptions, localInit, body, localFinally) :
     Sequential.For(fromInclusive, toExclusive, parallelOptions, localInit, body, localFinally);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation with 64-bit indexes and with thread-local data on a <see cref="OrderablePartitioner{TSource}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TSource">The type of the elements in source.</typeparam>
 /// <typeparam name="TLocal">The type of the thread-local data.</typeparam>
 /// <param name="source">The orderable partitioner that contains the original data source.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="localInit">The function delegate that returns the initial state of the local data for each task.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <param name="localFinally">The delegate that performs a final action on the local state of each task.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource, TLocal>(OrderablePartitioner <TSource> source, ParallelOptions parallelOptions, Func <TLocal> localInit, Func <TSource, ParallelLoopState, long, TLocal, TLocal> body, Action <TLocal> localFinally) =>
 IsParallel?
 Parallel.ForEach(source, parallelOptions, localInit, body, localFinally) :
     Sequential.ForEach(source, parallelOptions, localInit, body, localFinally);
 /// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop with 64-bit indexes and thread-local data in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TLocal">The type of the thread-local data.</typeparam>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="localInit">The function delegate that returns the initial state of the local data for each task.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <param name="localFinally">The delegate that performs a final action on the local state of each task.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For <TLocal>(long fromInclusive, long toExclusive, Func <TLocal> localInit, Func <long, ParallelLoopState, TLocal, TLocal> body, Action <TLocal> localFinally) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, localInit, body, localFinally) :
     Sequential.For(fromInclusive, toExclusive, localInit, body, localFinally);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation on a <see cref="Partitioner{TSource}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TSource">The type of the elements in source.</typeparam>
 /// <param name="source">The partitioner that contains the original data source.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource>(Partitioner <TSource> source, Action <TSource, ParallelLoopState> body) =>
 IsParallel?
 Parallel.ForEach(source, body) :
     Sequential.ForEach(source, body);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation on a <see cref="OrderablePartitioner{TSource}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TSource">The type of the elements in source.</typeparam>
 /// <param name="source">The orderable partitioner that contains the original data source.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource>(OrderablePartitioner <TSource> source, ParallelOptions parallelOptions, Action <TSource, ParallelLoopState, long> body) =>
 IsParallel?
 Parallel.ForEach(source, parallelOptions, body) :
     Sequential.ForEach(source, parallelOptions, body);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation with 64-bit indexes on an <see cref="IEnumerable{T}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TSource">The type of the data in the source.</typeparam>
 /// <param name="source">An enumerable data source.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource>(IEnumerable <TSource> source, Action <TSource, ParallelLoopState, long> body) =>
 IsParallel?
 Parallel.ForEach(source, body) :
     Sequential.ForEach(source, body);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation with thread-local data and 64-bit indexes on an <see cref="IEnumerable{T}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <typeparam name="TSource">The type of the data in the source.</typeparam>
 /// <typeparam name="TLocal">The type of the thread-local data.</typeparam>
 /// <param name="source">An enumerable data source.</param>
 /// <param name="localInit">The function delegate that returns the initial state of the local data for each task.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <param name="localFinally">The delegate that performs a final action on the local state of each task.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource, TLocal>(IEnumerable <TSource> source, Func <TLocal> localInit, Func <TSource, ParallelLoopState, long, TLocal, TLocal> body, Action <TLocal> localFinally) =>
 IsParallel?
 Parallel.ForEach(source, localInit, body, localFinally) :
     Sequential.ForEach(source, localInit, body, localFinally);
 /// <summary>
 /// Executes a <c>foreach</c> (<c>For Each</c> in Visual Basic) operation on an <see cref="IEnumerable{T}"/> in which iterations are run sequentially when the debugger is attached or in parallel otherwise.
 /// </summary>
 /// <typeparam name="TSource">The type of the data in the source.</typeparam>
 /// <param name="source">An enumerable data source.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult ForEach <TSource>(IEnumerable <TSource> source, ParallelOptions parallelOptions, Action <TSource> body) =>
 IsParallel?
 Parallel.ForEach(source, parallelOptions, body) :
     Sequential.ForEach(source, parallelOptions, body);
 /// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop with 64-bit indexes in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// loop options can be configured,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For(long fromInclusive, long toExclusive, ParallelOptions parallelOptions, Action <long, ParallelLoopState> body) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, parallelOptions, body) :
     Sequential.For(fromInclusive, toExclusive, parallelOptions, body);
 /// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// and the state of the loop can be monitored and manipulated.
 /// </summary>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action <int, ParallelLoopState> body) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, body) :
     Sequential.For(fromInclusive, toExclusive, body);
 /// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop in which iterations are run sequentially when the debugger is attached or in parallel otherwise,
 /// and loop options can be configured.
 /// </summary>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="parallelOptions">An object that configures the behavior of this operation.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For(int fromInclusive, int toExclusive, ParallelOptions parallelOptions, Action <int> body) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, parallelOptions, body) :
     Sequential.For(fromInclusive, toExclusive, parallelOptions, body);
 /// <summary>
 /// Executes a <c>for</c> (<c>For</c> in Visual Basic) loop with 64-bit indexes in which iterations are run sequentially when the debugger is attached or in parallel otherwise.
 /// </summary>
 /// <param name="fromInclusive">The start index, inclusive.</param>
 /// <param name="toExclusive">The end index, exclusive.</param>
 /// <param name="body">The delegate that is invoked once per iteration.</param>
 /// <returns>A structure that contains information about which portion of the loop completed.</returns>
 public static ParallelLoopResult For(long fromInclusive, long toExclusive, Action <long> body) =>
 IsParallel?
 Parallel.For(fromInclusive, toExclusive, body) :
     Sequential.For(fromInclusive, toExclusive, body);