diff --git a/.editorconfig b/.editorconfig
index 57e440765..bf62f14a8 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -86,3 +86,15 @@ dotnet_diagnostic.IDE0055.severity = suggestion
# IDE0046: Convert to conditional expression
dotnet_diagnostic.IDE0046.severity = suggestion
+
+# CA1510: Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance
+# TODO: Remove post https://github.com/morelinq/MoreLINQ/issues/903
+dotnet_diagnostic.CA1510.severity = suggestion
+
+# CA1512: Use 'ArgumentOutOfRangeException.ThrowIfNegativeOrZero' instead of explicitly throwing a new exception instance
+# TODO: Remove post https://github.com/morelinq/MoreLINQ/issues/903
+dotnet_diagnostic.CA1512.severity = suggestion
+
+# CA1513: Use 'ObjectDisposedException.ThrowIf' instead of explicitly throwing a new exception instance
+# TODO: Remove post https://github.com/morelinq/MoreLINQ/issues/903
+dotnet_diagnostic.CA1513.severity = suggestion
diff --git a/Directory.Build.props b/Directory.Build.props
index ef2ed08ed..9fc11a600 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,7 +3,7 @@
11
enable
true
- 7.0-all
+ 8.0-all
true
EnableGenerateDocumentationFile
diff --git a/MoreLinq.Test/.editorconfig b/MoreLinq.Test/.editorconfig
index ffc9fb911..e6073bfb4 100644
--- a/MoreLinq.Test/.editorconfig
+++ b/MoreLinq.Test/.editorconfig
@@ -35,6 +35,9 @@ dotnet_diagnostic.IDE0047.severity = suggestion
[*{Test,Tests}.cs]
+# CA1861: Avoid constant arrays as arguments
+dotnet_diagnostic.CA1861.severity = none
+
# IDE0022: Use expression/block body for methods
dotnet_diagnostic.IDE0022.severity = none
diff --git a/MoreLinq.Test/Make.cs b/MoreLinq.Test/Make.cs
new file mode 100644
index 000000000..23e4cf873
--- /dev/null
+++ b/MoreLinq.Test/Make.cs
@@ -0,0 +1,30 @@
+#region License and Terms
+// MoreLINQ - Extensions to LINQ to Objects
+// Copyright (c) 2018 Atif Aziz. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#endregion
+
+global using static MoreLinq.Test.Make;
+
+namespace MoreLinq.Test
+{
+ using System.Collections.Generic;
+
+ static class Make
+ {
+ public static IEnumerable Seq(params T[] values) =>
+ from value in values
+ select value;
+ }
+}
diff --git a/MoreLinq.Test/MemoizeTest.cs b/MoreLinq.Test/MemoizeTest.cs
index 31ce2aeca..f8280e052 100644
--- a/MoreLinq.Test/MemoizeTest.cs
+++ b/MoreLinq.Test/MemoizeTest.cs
@@ -217,7 +217,7 @@ void Run()
[Test]
public static void MemoizeIteratorThrowsWhenCacheDisposedDuringIteration()
{
- var sequence = Enumerable.Range(1, 10);
+ var sequence = Seq(1, 2, 3);
var memoized = sequence.Memoize();
var disposable = (IDisposable)memoized;
diff --git a/MoreLinq.Test/MoreLinq.Test.csproj b/MoreLinq.Test/MoreLinq.Test.csproj
index c30b247bb..0b6d42855 100644
--- a/MoreLinq.Test/MoreLinq.Test.csproj
+++ b/MoreLinq.Test/MoreLinq.Test.csproj
@@ -2,7 +2,7 @@
MoreLinq.Test
- net7.0;net6.0;net471
+ net8.0;net7.0;net6.0;net471
portable
MoreLinq.Test
Exe
diff --git a/MoreLinq.Test/OrderedMergeTest.cs b/MoreLinq.Test/OrderedMergeTest.cs
index 416e43c48..6efcc9574 100644
--- a/MoreLinq.Test/OrderedMergeTest.cs
+++ b/MoreLinq.Test/OrderedMergeTest.cs
@@ -24,8 +24,6 @@ namespace MoreLinq.Test
[TestFixture]
public class OrderedMergeTest
{
- static IEnumerable Seq(params T[] values) => values;
-
public static readonly IEnumerable TestData =
from e in new[]
{
diff --git a/MoreLinq.Test/SegmentTest.cs b/MoreLinq.Test/SegmentTest.cs
index e4b587120..0f8996d86 100644
--- a/MoreLinq.Test/SegmentTest.cs
+++ b/MoreLinq.Test/SegmentTest.cs
@@ -149,8 +149,6 @@ public void VerifyCanSegmentByPrevious()
Assert.That(result.All(s => s.Count() == repCount), Is.True);
}
- static IEnumerable Seq(params T[] values) => values;
-
public static readonly IEnumerable TestData =
from e in new[]
{
diff --git a/MoreLinq.Test/SliceTest.cs b/MoreLinq.Test/SliceTest.cs
index d7498b946..f6b459f82 100644
--- a/MoreLinq.Test/SliceTest.cs
+++ b/MoreLinq.Test/SliceTest.cs
@@ -45,7 +45,7 @@ public void TestSliceIdentity()
{
const int count = 100;
var sequenceA = Enumerable.Range(1, count);
- var sequenceB = sequenceA.ToList();
+ var sequenceB = sequenceA.ToList().AsEnumerable();
var resultA = sequenceA.Slice(0, count);
var resultB = sequenceB.Slice(0, count);
@@ -64,7 +64,8 @@ public void TestSliceFirstItem()
{
const int count = 10;
var sequenceA = Enumerable.Range(1, count);
- var sequenceB = sequenceA.ToList();
+ var sequenceB = sequenceA.ToList().AsEnumerable();
+
var resultA = sequenceA.Slice(0, 1);
var resultB = sequenceB.Slice(0, 1);
@@ -82,7 +83,8 @@ public void TestSliceLastItem()
{
const int count = 10;
var sequenceA = Enumerable.Range(1, count);
- var sequenceB = sequenceA.ToList();
+ var sequenceB = sequenceA.ToList().AsEnumerable();
+
var resultA = sequenceA.Slice(count - 1, 1);
var resultB = sequenceB.Slice(count - 1, 1);
@@ -101,7 +103,8 @@ public void TestSliceSmallerThanSequence()
{
const int count = 10;
var sequenceA = Enumerable.Range(1, count);
- var sequenceB = sequenceA.ToList();
+ var sequenceB = sequenceA.ToList().AsEnumerable();
+
var resultA = sequenceA.Slice(4, 5);
var resultB = sequenceB.Slice(4, 5);
@@ -120,7 +123,8 @@ public void TestSliceLongerThanSequence()
{
const int count = 100;
var sequenceA = Enumerable.Range(1, count);
- var sequenceB = sequenceA.ToList();
+ var sequenceB = sequenceA.ToList().AsEnumerable();
+
var resultA = sequenceA.Slice(count / 2, count);
var resultB = sequenceB.Slice(count / 2, count);
diff --git a/MoreLinq.Test/ZipLongestTest.cs b/MoreLinq.Test/ZipLongestTest.cs
index 3d07993a5..6ead0148e 100644
--- a/MoreLinq.Test/ZipLongestTest.cs
+++ b/MoreLinq.Test/ZipLongestTest.cs
@@ -26,8 +26,6 @@ namespace MoreLinq.Test
[TestFixture]
public class ZipLongestTest
{
- static IEnumerable Seq(params T[] values) => values;
-
public static readonly IEnumerable TestData =
from e in new[]
{
@@ -44,10 +42,10 @@ from e in new[]
[Test, TestCaseSource(nameof(TestData))]
- public IEnumerable<(int, string)> ZipLongest(int[] first, string[] second)
+ public IEnumerable<(int, string)> ZipLongest(IEnumerable first, IEnumerable second)
{
- using var ts1 = TestingSequence.Of(first);
- using var ts2 = TestingSequence.Of(second);
+ using var ts1 = first.AsTestingSequence();
+ using var ts2 = second.AsTestingSequence();
return ts1.ZipLongest(ts2, Tuple.Create).ToArray();
}
diff --git a/MoreLinq/CompatibilitySuppressions.xml b/MoreLinq/CompatibilitySuppressions.xml
index ffe9243dc..1b532b5f8 100644
--- a/MoreLinq/CompatibilitySuppressions.xml
+++ b/MoreLinq/CompatibilitySuppressions.xml
@@ -1,6 +1,12 @@
+
+ CP0002
+ M:MoreLinq.SequenceException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)
+ lib/net6.0/MoreLinq.dll
+ lib/net8.0/MoreLinq.dll
+
CP0002
M:MoreLinq.MoreEnumerable.SkipLast``1(System.Collections.Generic.IEnumerable{``0},System.Int32)
diff --git a/MoreLinq/Experimental/Async/Merge.cs b/MoreLinq/Experimental/Async/Merge.cs
index 34130abef..7e6312b9b 100644
--- a/MoreLinq/Experimental/Async/Merge.cs
+++ b/MoreLinq/Experimental/Async/Merge.cs
@@ -180,7 +180,11 @@ async IAsyncEnumerable Async([EnumeratorCancellation]CancellationToken cancel
// Signal cancellation to those in flight. Unfortunately, this relies on all
// iterators to honour the cancellation.
+#if NET8_0_OR_GREATER
+ await thisCancellationTokenSource.CancelAsync().ConfigureAwait(false);
+#else
thisCancellationTokenSource.Cancel();
+#endif
// > The caller of an async-iterator method should only call `DisposeAsync()`
// > when the method completed or was suspended by a `yield return`.
diff --git a/MoreLinq/Experimental/Await.cs b/MoreLinq/Experimental/Await.cs
index aa6e0a15f..abbfa0caa 100644
--- a/MoreLinq/Experimental/Await.cs
+++ b/MoreLinq/Experimental/Await.cs
@@ -697,7 +697,9 @@ await concurrencyGate.EnterAsync(cancellationToken)
static class AwaitQuery
{
public static IAwaitQuery
+#pragma warning disable CA1859 // Use concrete types when possible for improved performance (by-design)
Create(
+#pragma warning restore CA1859 // Use concrete types when possible for improved performance
Func> impl,
AwaitQueryOptions? options = null) =>
new AwaitQuery(impl, options);
diff --git a/MoreLinq/Flatten.cs b/MoreLinq/Flatten.cs
index 564da9731..eaee331d2 100644
--- a/MoreLinq/Flatten.cs
+++ b/MoreLinq/Flatten.cs
@@ -20,7 +20,6 @@
namespace MoreLinq
{
using System;
- using System.Linq;
using System.Collections;
using System.Collections.Generic;
@@ -135,7 +134,7 @@ public static IEnumerable<
try
{
- while (stack.Any())
+ while (stack.Count > 0)
{
e = stack.Pop();
diff --git a/MoreLinq/GroupAdjacent.cs b/MoreLinq/GroupAdjacent.cs
index a79e58499..8cf89a5e3 100644
--- a/MoreLinq/GroupAdjacent.cs
+++ b/MoreLinq/GroupAdjacent.cs
@@ -295,7 +295,7 @@ static IEnumerable GroupAdjacentImpl(
}
}
- static IGrouping CreateGroupAdjacentGrouping(TKey key, IList members) =>
+ static Grouping CreateGroupAdjacentGrouping(TKey key, IList members) =>
Grouping.Create(key, members.IsReadOnly ? members : new ReadOnlyCollection(members));
static class Grouping
diff --git a/MoreLinq/MoreLinq.csproj b/MoreLinq/MoreLinq.csproj
index 60ebd05e0..6671f4934 100644
--- a/MoreLinq/MoreLinq.csproj
+++ b/MoreLinq/MoreLinq.csproj
@@ -120,7 +120,7 @@
en-US
4.1.0
MoreLINQ Developers.
- netstandard2.0;netstandard2.1;net6.0
+ netstandard2.0;netstandard2.1;net6.0;net8.0
portable
true
MoreLinq
diff --git a/MoreLinq/Permutations.cs b/MoreLinq/Permutations.cs
index 52e354c60..f6cb840c4 100644
--- a/MoreLinq/Permutations.cs
+++ b/MoreLinq/Permutations.cs
@@ -167,8 +167,8 @@ void NextPermutation()
/// be surprised to discover that all of the permutations looked the
/// same.
///
- /// List of permuted source sequence values
- IList PermuteValueSet()
+ /// Array of permuted source sequence values
+ T[] PermuteValueSet()
{
var permutedSet = new T[_permutation.Length];
for (var i = 0; i < _permutation.Length; i++)
diff --git a/MoreLinq/PublicAPI/net8.0/PublicAPI.Shipped.txt b/MoreLinq/PublicAPI/net8.0/PublicAPI.Shipped.txt
new file mode 100644
index 000000000..7dc5c5811
--- /dev/null
+++ b/MoreLinq/PublicAPI/net8.0/PublicAPI.Shipped.txt
@@ -0,0 +1 @@
+#nullable enable
diff --git a/MoreLinq/PublicAPI/net8.0/PublicAPI.Unshipped.txt b/MoreLinq/PublicAPI/net8.0/PublicAPI.Unshipped.txt
new file mode 100644
index 000000000..ce7910980
--- /dev/null
+++ b/MoreLinq/PublicAPI/net8.0/PublicAPI.Unshipped.txt
@@ -0,0 +1,691 @@
+#nullable enable
+MoreLinq.Experimental.Async.ExperimentalEnumerable
+MoreLinq.Experimental.AwaitQueryOptions
+MoreLinq.Experimental.AwaitQueryOptions.MaxConcurrency.get -> int?
+MoreLinq.Experimental.AwaitQueryOptions.PreserveOrder.get -> bool
+MoreLinq.Experimental.AwaitQueryOptions.Scheduler.get -> System.Threading.Tasks.TaskScheduler!
+MoreLinq.Experimental.AwaitQueryOptions.WithMaxConcurrency(int? value) -> MoreLinq.Experimental.AwaitQueryOptions!
+MoreLinq.Experimental.AwaitQueryOptions.WithPreserveOrder(bool value) -> MoreLinq.Experimental.AwaitQueryOptions!
+MoreLinq.Experimental.AwaitQueryOptions.WithScheduler(System.Threading.Tasks.TaskScheduler! value) -> MoreLinq.Experimental.AwaitQueryOptions!
+MoreLinq.Experimental.ExperimentalEnumerable
+MoreLinq.Experimental.IAwaitQuery
+MoreLinq.Experimental.IAwaitQuery.Options.get -> MoreLinq.Experimental.AwaitQueryOptions!
+MoreLinq.Experimental.IAwaitQuery.WithOptions(MoreLinq.Experimental.AwaitQueryOptions! options) -> MoreLinq.Experimental.IAwaitQuery!
+MoreLinq.Experimental.ICurrentBuffer
+MoreLinq.Extensions.AcquireExtension
+MoreLinq.Extensions.AggregateExtension
+MoreLinq.Extensions.AggregateRightExtension
+MoreLinq.Extensions.AppendExtension
+MoreLinq.Extensions.AssertCountExtension
+MoreLinq.Extensions.AssertExtension
+MoreLinq.Extensions.AtLeastExtension
+MoreLinq.Extensions.AtMostExtension
+MoreLinq.Extensions.BacksertExtension
+MoreLinq.Extensions.BatchExtension
+MoreLinq.Extensions.CartesianExtension
+MoreLinq.Extensions.ChooseExtension
+MoreLinq.Extensions.CompareCountExtension
+MoreLinq.Extensions.ConsumeExtension
+MoreLinq.Extensions.CountBetweenExtension
+MoreLinq.Extensions.CountByExtension
+MoreLinq.Extensions.CountDownExtension
+MoreLinq.Extensions.DistinctByExtension
+MoreLinq.Extensions.EndsWithExtension
+MoreLinq.Extensions.EquiZipExtension
+MoreLinq.Extensions.EvaluateExtension
+MoreLinq.Extensions.ExactlyExtension
+MoreLinq.Extensions.ExceptByExtension
+MoreLinq.Extensions.ExcludeExtension
+MoreLinq.Extensions.FallbackIfEmptyExtension
+MoreLinq.Extensions.FillBackwardExtension
+MoreLinq.Extensions.FillForwardExtension
+MoreLinq.Extensions.FirstExtension
+MoreLinq.Extensions.FirstOrDefaultExtension
+MoreLinq.Extensions.FlattenExtension
+MoreLinq.Extensions.FoldExtension
+MoreLinq.Extensions.ForEachExtension
+MoreLinq.Extensions.FullGroupJoinExtension
+MoreLinq.Extensions.FullJoinExtension
+MoreLinq.Extensions.GroupAdjacentExtension
+MoreLinq.Extensions.IndexByExtension
+MoreLinq.Extensions.IndexExtension
+MoreLinq.Extensions.InsertExtension
+MoreLinq.Extensions.InterleaveExtension
+MoreLinq.Extensions.LagExtension
+MoreLinq.Extensions.LastExtension
+MoreLinq.Extensions.LastOrDefaultExtension
+MoreLinq.Extensions.LeadExtension
+MoreLinq.Extensions.LeftJoinExtension
+MoreLinq.Extensions.MaxByExtension
+MoreLinq.Extensions.MinByExtension
+MoreLinq.Extensions.MaximaExtension
+MoreLinq.Extensions.MinimaExtension
+MoreLinq.Extensions.MoveExtension
+MoreLinq.Extensions.OrderByExtension
+MoreLinq.Extensions.OrderedMergeExtension
+MoreLinq.Extensions.PadExtension
+MoreLinq.Extensions.PadStartExtension
+MoreLinq.Extensions.PairwiseExtension
+MoreLinq.Extensions.PartialSortByExtension
+MoreLinq.Extensions.PartialSortExtension
+MoreLinq.Extensions.PartitionExtension
+MoreLinq.Extensions.PermutationsExtension
+MoreLinq.Extensions.PipeExtension
+MoreLinq.Extensions.PrependExtension
+MoreLinq.Extensions.PreScanExtension
+MoreLinq.Extensions.RandomSubsetExtension
+MoreLinq.Extensions.RankByExtension
+MoreLinq.Extensions.RankExtension
+MoreLinq.Extensions.RepeatExtension
+MoreLinq.Extensions.RightJoinExtension
+MoreLinq.Extensions.RunLengthEncodeExtension
+MoreLinq.Extensions.ScanByExtension
+MoreLinq.Extensions.ScanExtension
+MoreLinq.Extensions.ScanRightExtension
+MoreLinq.Extensions.SegmentExtension
+MoreLinq.Extensions.ShuffleExtension
+MoreLinq.Extensions.SingleExtension
+MoreLinq.Extensions.SingleOrDefaultExtension
+MoreLinq.Extensions.SkipLastExtension
+MoreLinq.Extensions.SkipUntilExtension
+MoreLinq.Extensions.SliceExtension
+MoreLinq.Extensions.SortedMergeExtension
+MoreLinq.Extensions.SplitExtension
+MoreLinq.Extensions.StartsWithExtension
+MoreLinq.Extensions.SubsetsExtension
+MoreLinq.Extensions.TagFirstLastExtension
+MoreLinq.Extensions.TakeEveryExtension
+MoreLinq.Extensions.TakeLastExtension
+MoreLinq.Extensions.TakeUntilExtension
+MoreLinq.Extensions.ThenByExtension
+MoreLinq.Extensions.ToArrayByIndexExtension
+MoreLinq.Extensions.ToDataTableExtension
+MoreLinq.Extensions.ToDelimitedStringExtension
+MoreLinq.Extensions.ToDictionaryExtension
+MoreLinq.Extensions.ToHashSetExtension
+MoreLinq.Extensions.ToLookupExtension
+MoreLinq.Extensions.TraceExtension
+MoreLinq.Extensions.TransposeExtension
+MoreLinq.Extensions.WindowExtension
+MoreLinq.Extensions.WindowLeftExtension
+MoreLinq.Extensions.WindowRightExtension
+MoreLinq.Extensions.ZipLongestExtension
+MoreLinq.Extensions.ZipShortestExtension
+MoreLinq.IExtremaEnumerable
+MoreLinq.IExtremaEnumerable.Take(int count) -> System.Collections.Generic.IEnumerable!
+MoreLinq.IExtremaEnumerable.TakeLast(int count) -> System.Collections.Generic.IEnumerable!
+MoreLinq.MoreEnumerable
+MoreLinq.OrderByDirection
+MoreLinq.OrderByDirection.Ascending = 0 -> MoreLinq.OrderByDirection
+MoreLinq.OrderByDirection.Descending = 1 -> MoreLinq.OrderByDirection
+MoreLinq.SequenceException
+MoreLinq.SequenceException.SequenceException() -> void
+MoreLinq.SequenceException.SequenceException(string? message) -> void
+MoreLinq.SequenceException.SequenceException(string? message, System.Exception? innerException) -> void
+static MoreLinq.Experimental.Async.ExperimentalEnumerable.Merge(this System.Collections.Generic.IEnumerable!>! sources) -> System.Collections.Generic.IAsyncEnumerable!
+static MoreLinq.Experimental.Async.ExperimentalEnumerable.Merge(this System.Collections.Generic.IEnumerable!>! sources, int maxConcurrent) -> System.Collections.Generic.IAsyncEnumerable!
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func!, System.IObservable!>! accumulator4, System.Func!, System.IObservable!>! accumulator5, System.Func!, System.IObservable!>! accumulator6, System.Func!, System.IObservable!>! accumulator7, System.Func!, System.IObservable!>! accumulator8, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func!, System.IObservable!>! accumulator4, System.Func!, System.IObservable!>! accumulator5, System.Func!, System.IObservable!>! accumulator6, System.Func!, System.IObservable!>! accumulator7, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func!, System.IObservable!>! accumulator4, System.Func!, System.IObservable!>! accumulator5, System.Func!, System.IObservable!>! accumulator6, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func!, System.IObservable!>! accumulator4, System.Func!, System.IObservable!>! accumulator5, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func!, System.IObservable!>! accumulator4, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func!, System.IObservable!>! accumulator3, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.Aggregate(this System.Collections.Generic.IEnumerable! source, System.Func!, System.IObservable!>! accumulator1, System.Func!, System.IObservable!>! accumulator2, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.AsOrdered(this MoreLinq.Experimental.IAwaitQuery! source) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.AsSequential(this MoreLinq.Experimental.IAwaitQuery! source) -> System.Collections.Generic.IEnumerable!
+static MoreLinq.Experimental.ExperimentalEnumerable.AsUnordered(this MoreLinq.Experimental.IAwaitQuery! source) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.Await(this System.Collections.Generic.IEnumerable! source, System.Func!>! evaluator) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.Await(this System.Collections.Generic.IEnumerable!>! source) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.AwaitCompletion(this System.Collections.Generic.IEnumerable! source, System.Func!>! evaluator, System.Func!, TResult>! resultSelector) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.Batch(this System.Collections.Generic.IEnumerable! source, int size, System.Buffers.ArrayPool! pool, System.Func!, System.Collections.Generic.IEnumerable!>! bucketProjectionSelector, System.Func!, TResult>! resultSelector) -> System.Collections.Generic.IEnumerable!
+static MoreLinq.Experimental.ExperimentalEnumerable.Batch(this System.Collections.Generic.IEnumerable! source, int size, System.Buffers.ArrayPool! pool, System.Func!, TResult>! resultSelector) -> System.Collections.Generic.IEnumerable!
+static MoreLinq.Experimental.ExperimentalEnumerable.MaxConcurrency(this MoreLinq.Experimental.IAwaitQuery! source, int value) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.Memoize(this System.Collections.Generic.IEnumerable! source) -> System.Collections.Generic.IEnumerable!
+static MoreLinq.Experimental.ExperimentalEnumerable.PreserveOrder(this MoreLinq.Experimental.IAwaitQuery! source, bool value) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.Scheduler(this MoreLinq.Experimental.IAwaitQuery! source, System.Threading.Tasks.TaskScheduler! value) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Experimental.ExperimentalEnumerable.TrySingle(this System.Collections.Generic.IEnumerable! source, TCardinality zero, TCardinality one, TCardinality many, System.Func! resultSelector) -> TResult
+static MoreLinq.Experimental.ExperimentalEnumerable.TrySingle(this System.Collections.Generic.IEnumerable! source, TCardinality zero, TCardinality one, TCardinality many) -> (TCardinality Cardinality, T? Value)
+static MoreLinq.Experimental.ExperimentalEnumerable.UnboundedConcurrency(this MoreLinq.Experimental.IAwaitQuery! source) -> MoreLinq.Experimental.IAwaitQuery!
+static MoreLinq.Extensions.AcquireExtension.Acquire(this System.Collections.Generic.IEnumerable! source) -> TSource[]!
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, TAccumulate4 seed4, System.Func! accumulator4, TAccumulate5 seed5, System.Func! accumulator5, TAccumulate6 seed6, System.Func! accumulator6, TAccumulate7 seed7, System.Func! accumulator7, TAccumulate8 seed8, System.Func! accumulator8, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, TAccumulate4 seed4, System.Func! accumulator4, TAccumulate5 seed5, System.Func! accumulator5, TAccumulate6 seed6, System.Func! accumulator6, TAccumulate7 seed7, System.Func! accumulator7, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, TAccumulate4 seed4, System.Func! accumulator4, TAccumulate5 seed5, System.Func! accumulator5, TAccumulate6 seed6, System.Func! accumulator6, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, TAccumulate4 seed4, System.Func! accumulator4, TAccumulate5 seed5, System.Func! accumulator5, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, TAccumulate4 seed4, System.Func! accumulator4, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, TAccumulate3 seed3, System.Func! accumulator3, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateExtension.Aggregate(this System.Collections.Generic.IEnumerable! source, TAccumulate1 seed1, System.Func! accumulator1, TAccumulate2 seed2, System.Func! accumulator2, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateRightExtension.AggregateRight(this System.Collections.Generic.IEnumerable! source, TAccumulate seed, System.Func! func, System.Func! resultSelector) -> TResult
+static MoreLinq.Extensions.AggregateRightExtension.AggregateRight(this System.Collections.Generic.IEnumerable