Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MirageCoreExperimental v1.0.7
Collections.Pooled/Collections.Pooled.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Buffers; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Threading; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: InternalsVisibleTo("Collections.Pooled.Tests")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Joel Mueller")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("Copyright (c) 2018, 2019 Joel Mueller, Dzmitry Lahoda, based on code from the .NET Foundation")] [assembly: AssemblyDescription("Includes PooledList, PooledDictionary, PooledSet, PooledStack, and PooledQueue: based on the corresponding collections in System.Collections.Generic, but using ArrayPool internally to reduce allocations, and with some API changes that allow for better compatibility with Span.")] [assembly: AssemblyFileVersion("1.0.82")] [assembly: AssemblyInformationalVersion("1.0.82")] [assembly: AssemblyProduct("Collections.Pooled")] [assembly: AssemblyTitle("Collections.Pooled")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.82.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class IsReadOnlyAttribute : Attribute { } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class IsByRefLikeAttribute : Attribute { } } namespace Collections.Pooled { internal ref struct BitHelper { private const int IntSize = 32; private readonly Span<int> _span; internal BitHelper(Span<int> span, bool clear) { if (clear) { span.Clear(); } _span = span; } internal void MarkBit(int bitPosition) { int num = bitPosition / 32; if ((uint)num < (uint)_span.Length) { _span[num] |= 1 << bitPosition % 32; } } internal bool IsMarked(int bitPosition) { int num = bitPosition / 32; if ((uint)num < (uint)_span.Length) { return (_span[num] & (1 << bitPosition % 32)) != 0; } return false; } internal int FindFirstUnmarked(int startPosition = 0) { int num = startPosition; int num2 = num / 32; while ((uint)num2 < (uint)_span.Length) { if ((_span[num2] & (1 << num % 32)) == 0) { return num; } num2 = ++num / 32; } return -1; } internal int FindFirstMarked(int startPosition = 0) { int num = startPosition; int num2 = num / 32; while ((uint)num2 < (uint)_span.Length) { if ((_span[num2] & (1 << num % 32)) != 0) { return num; } num2 = ++num / 32; } return -1; } internal static int ToIntArrayLength(int n) { if (n <= 0) { return 0; } return (n - 1) / 32 + 1; } } public enum ClearMode { Auto, Always, Never } internal static class HashHelpers { public const int HashCollisionThreshold = 100; public const int MaxPrimeArrayLength = 2146435069; public const int HashPrime = 101; public static readonly int[] primes = new int[72] { 3, 7, 11, 17, 23, 29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521, 631, 761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839, 7013, 8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353, 43627, 52361, 62851, 75431, 90523, 108631, 130363, 156437, 187751, 225307, 270371, 324449, 389357, 467237, 560689, 672827, 807403, 968897, 1162687, 1395263, 1674319, 2009191, 2411033, 2893249, 3471899, 4166287, 4999559, 5999471, 7199369 }; private static ConditionalWeakTable<object, SerializationInfo> s_serializationInfoTable; public static ConditionalWeakTable<object, SerializationInfo> SerializationInfoTable { get { if (s_serializationInfoTable == null) { Interlocked.CompareExchange(ref s_serializationInfoTable, new ConditionalWeakTable<object, SerializationInfo>(), null); } return s_serializationInfoTable; } } public static bool IsPrime(int candidate) { if (((uint)candidate & (true ? 1u : 0u)) != 0) { int num = (int)Math.Sqrt(candidate); for (int i = 3; i <= num; i += 2) { if (candidate % i == 0) { return false; } } return true; } return candidate == 2; } public static int GetPrime(int min) { if (min < 0) { throw new ArgumentException("Cannot get the next prime from a negative number."); } for (int i = 0; i < primes.Length; i++) { int num = primes[i]; if (num >= min) { return num; } } for (int j = min | 1; j < int.MaxValue; j += 2) { if (IsPrime(j) && (j - 1) % 101 != 0) { return j; } } return min; } public static int ExpandPrime(int oldSize) { int num = 2 * oldSize; if ((uint)num > 2146435069u && 2146435069 > oldSize) { return 2146435069; } return GetPrime(num); } } internal sealed class ICollectionDebugView<T> { private readonly ICollection<T> _collection; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public T[] Items { get { T[] array = new T[_collection.Count]; _collection.CopyTo(array, 0); return array; } } public ICollectionDebugView(ICollection<T> collection) { _collection = collection ?? throw new ArgumentNullException("collection"); } } internal sealed class IDictionaryDebugView<K, V> { private readonly IDictionary<K, V> _dict; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public KeyValuePair<K, V>[] Items { get { KeyValuePair<K, V>[] array = new KeyValuePair<K, V>[_dict.Count]; _dict.CopyTo(array, 0); return array; } } public IDictionaryDebugView(IDictionary<K, V> dictionary) { _dict = dictionary ?? throw new ArgumentNullException("dictionary"); } } internal sealed class DictionaryKeyCollectionDebugView<TKey, TValue> { private readonly ICollection<TKey> _collection; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public TKey[] Items { get { TKey[] array = new TKey[_collection.Count]; _collection.CopyTo(array, 0); return array; } } public DictionaryKeyCollectionDebugView(ICollection<TKey> collection) { _collection = collection ?? throw new ArgumentNullException("collection"); } } internal sealed class DictionaryValueCollectionDebugView<TKey, TValue> { private readonly ICollection<TValue> _collection; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public TValue[] Items { get { TValue[] array = new TValue[_collection.Count]; _collection.CopyTo(array, 0); return array; } } public DictionaryValueCollectionDebugView(ICollection<TValue> collection) { _collection = collection ?? throw new ArgumentNullException("collection"); } } public interface IReadOnlyPooledList<T> : IReadOnlyList<T>, IEnumerable<T>, IEnumerable, IReadOnlyCollection<T> { ReadOnlySpan<T> Span { get; } } [Serializable] public sealed class NonRandomizedStringEqualityComparer : EqualityComparer<string>, ISerializable { private static readonly int s_empyStringHashCode = string.Empty.GetHashCode(); internal new static IEqualityComparer<string> Default { get; } = new NonRandomizedStringEqualityComparer(); private NonRandomizedStringEqualityComparer() { } private NonRandomizedStringEqualityComparer(SerializationInfo information, StreamingContext context) { } public sealed override bool Equals(string x, string y) { return string.Equals(x, y); } public sealed override int GetHashCode(string str) { if (str != null) { if (str.Length != 0) { return GetNonRandomizedHashCode(str); } return s_empyStringHashCode; } return 0; } void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { info.SetType(typeof(NonRandomizedStringEqualityComparer)); } private unsafe static int GetNonRandomizedHashCode(string str) { ReadOnlySpan<char> readOnlySpan = str.AsSpan(); fixed (char* ptr = readOnlySpan) { uint num = 352654597u; uint num2 = num; uint* ptr2 = (uint*)ptr; int num3 = readOnlySpan.Length; while (num3 > 2) { num3 -= 4; num = (((num << 5) | (num >> 27)) + num) ^ *ptr2; num2 = (((num2 << 5) | (num2 >> 27)) + num2) ^ ptr2[1]; ptr2 += 2; } if (num3 > 0) { num2 = (((num2 << 5) | (num2 >> 27)) + num2) ^ *ptr2; } return (int)(num + num2 * 1566083941); } } } internal enum InsertionBehavior : byte { None, OverwriteExisting, ThrowOnExisting } [Serializable] [DebuggerTypeProxy(typeof(IDictionaryDebugView<, >))] [DebuggerDisplay("Count = {Count}")] public class PooledDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable, IDictionary, ICollection, IReadOnlyDictionary<TKey, TValue>, IReadOnlyCollection<KeyValuePair<TKey, TValue>>, ISerializable, IDeserializationCallback, IDisposable { private struct Entry { public int hashCode; public int next; public TKey key; public TValue value; } public struct Enumerator : IEnumerator<KeyValuePair<TKey, TValue>>, IEnumerator, IDisposable, IDictionaryEnumerator { private readonly PooledDictionary<TKey, TValue> _dictionary; private readonly int _version; private int _index; private KeyValuePair<TKey, TValue> _current; private readonly int _getEnumeratorRetType; internal const int DictEntry = 1; internal const int KeyValuePair = 2; public KeyValuePair<TKey, TValue> Current => _current; object IEnumerator.Current { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } if (_getEnumeratorRetType == 1) { return new DictionaryEntry(_current.Key, _current.Value); } return new KeyValuePair<TKey, TValue>(_current.Key, _current.Value); } } DictionaryEntry IDictionaryEnumerator.Entry { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return new DictionaryEntry(_current.Key, _current.Value); } } object IDictionaryEnumerator.Key { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return _current.Key; } } object IDictionaryEnumerator.Value { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return _current.Value; } } internal Enumerator(PooledDictionary<TKey, TValue> dictionary, int getEnumeratorRetType) { _dictionary = dictionary; _version = dictionary._version; _index = 0; _getEnumeratorRetType = getEnumeratorRetType; _current = default(KeyValuePair<TKey, TValue>); } public bool MoveNext() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } while ((uint)_index < (uint)_dictionary._count) { ref Entry reference = ref _dictionary._entries[_index++]; if (reference.hashCode >= 0) { _current = new KeyValuePair<TKey, TValue>(reference.key, reference.value); return true; } } _index = _dictionary._count + 1; _current = default(KeyValuePair<TKey, TValue>); return false; } public void Dispose() { } void IEnumerator.Reset() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = 0; _current = default(KeyValuePair<TKey, TValue>); } } [DebuggerTypeProxy(typeof(DictionaryKeyCollectionDebugView<, >))] [DebuggerDisplay("Count = {Count}")] public sealed class KeyCollection : ICollection<TKey>, IEnumerable<TKey>, IEnumerable, ICollection, IReadOnlyCollection<TKey> { public struct Enumerator : IEnumerator<TKey>, IEnumerator, IDisposable { private readonly PooledDictionary<TKey, TValue> _dictionary; private int _index; private readonly int _version; private TKey _currentKey; public TKey Current => _currentKey; object IEnumerator.Current { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return _currentKey; } } internal Enumerator(PooledDictionary<TKey, TValue> dictionary) { _dictionary = dictionary; _version = dictionary._version; _index = 0; _currentKey = default(TKey); } public void Dispose() { } public bool MoveNext() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } while ((uint)_index < (uint)_dictionary._count) { ref Entry reference = ref _dictionary._entries[_index++]; if (reference.hashCode >= 0) { _currentKey = reference.key; return true; } } _index = _dictionary._count + 1; _currentKey = default(TKey); return false; } void IEnumerator.Reset() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = 0; _currentKey = default(TKey); } } private readonly PooledDictionary<TKey, TValue> _dictionary; public int Count => _dictionary.Count; bool ICollection<TKey>.IsReadOnly => true; bool ICollection.IsSynchronized => false; object ICollection.SyncRoot => ((ICollection)_dictionary).SyncRoot; public KeyCollection(PooledDictionary<TKey, TValue> dictionary) { _dictionary = dictionary ?? throw new ArgumentNullException("dictionary"); } public Enumerator GetEnumerator() { return new Enumerator(_dictionary); } public void CopyTo(TKey[] array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (index < 0 || index > array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < _dictionary.Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } int count = _dictionary._count; Entry[] entries = _dictionary._entries; for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { array[index++] = entries[i].key; } } } void ICollection<TKey>.Add(TKey item) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_KeyCollectionSet); } void ICollection<TKey>.Clear() { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_KeyCollectionSet); } bool ICollection<TKey>.Contains(TKey item) { return _dictionary.ContainsKey(item); } bool ICollection<TKey>.Remove(TKey item) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_KeyCollectionSet); return false; } IEnumerator<TKey> IEnumerable<TKey>.GetEnumerator() { return new Enumerator(_dictionary); } IEnumerator IEnumerable.GetEnumerator() { return new Enumerator(_dictionary); } void ICollection.CopyTo(Array array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (array.Rank != 1) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported); } if (array.GetLowerBound(0) != 0) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_NonZeroLowerBound); } if ((uint)index > (uint)array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < _dictionary.Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } if (array is TKey[] array2) { CopyTo(array2, index); return; } object[] array3 = array as object[]; if (array3 == null) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } int count = _dictionary._count; Entry[] entries = _dictionary._entries; try { for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { array3[index++] = entries[i].key; } } } catch (ArrayTypeMismatchException) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } } } [DebuggerTypeProxy(typeof(DictionaryValueCollectionDebugView<, >))] [DebuggerDisplay("Count = {Count}")] public sealed class ValueCollection : ICollection<TValue>, IEnumerable<TValue>, IEnumerable, ICollection, IReadOnlyCollection<TValue> { public struct Enumerator : IEnumerator<TValue>, IEnumerator, IDisposable { private readonly PooledDictionary<TKey, TValue> _dictionary; private int _index; private readonly int _version; private TValue _currentValue; public TValue Current => _currentValue; object IEnumerator.Current { get { if (_index == 0 || _index == _dictionary._count + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return _currentValue; } } internal Enumerator(PooledDictionary<TKey, TValue> dictionary) { _dictionary = dictionary; _version = dictionary._version; _index = 0; _currentValue = default(TValue); } public void Dispose() { } public bool MoveNext() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } while ((uint)_index < (uint)_dictionary._count) { ref Entry reference = ref _dictionary._entries[_index++]; if (reference.hashCode >= 0) { _currentValue = reference.value; return true; } } _index = _dictionary._count + 1; _currentValue = default(TValue); return false; } void IEnumerator.Reset() { if (_version != _dictionary._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = 0; _currentValue = default(TValue); } } private readonly PooledDictionary<TKey, TValue> _dictionary; public int Count => _dictionary.Count; bool ICollection<TValue>.IsReadOnly => true; bool ICollection.IsSynchronized => false; object ICollection.SyncRoot => ((ICollection)_dictionary).SyncRoot; public ValueCollection(PooledDictionary<TKey, TValue> dictionary) { if (dictionary == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.dictionary); } _dictionary = dictionary; } public Enumerator GetEnumerator() { return new Enumerator(_dictionary); } public void CopyTo(TValue[] array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (index < 0 || index > array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < _dictionary.Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } int count = _dictionary._count; Entry[] entries = _dictionary._entries; for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { array[index++] = entries[i].value; } } } void ICollection<TValue>.Add(TValue item) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ValueCollectionSet); } bool ICollection<TValue>.Remove(TValue item) { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ValueCollectionSet); return false; } void ICollection<TValue>.Clear() { ThrowHelper.ThrowNotSupportedException(ExceptionResource.NotSupported_ValueCollectionSet); } bool ICollection<TValue>.Contains(TValue item) { return _dictionary.ContainsValue(item); } IEnumerator<TValue> IEnumerable<TValue>.GetEnumerator() { return new Enumerator(_dictionary); } IEnumerator IEnumerable.GetEnumerator() { return new Enumerator(_dictionary); } void ICollection.CopyTo(Array array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (array.Rank != 1) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported); } if (array.GetLowerBound(0) != 0) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_NonZeroLowerBound); } if ((uint)index > (uint)array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < _dictionary.Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } if (array is TValue[] array2) { CopyTo(array2, index); return; } if (array is object[] array3) { int count = _dictionary._count; Entry[] entries = _dictionary._entries; try { for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { array3[index++] = entries[i].value; } } return; } catch (ArrayTypeMismatchException) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); return; } } ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } } private const int Lower31BitMask = int.MaxValue; private const string VersionName = "Version"; private const string HashSizeName = "HashSize"; private const string KeyValuePairsName = "KeyValuePairs"; private const string ComparerName = "Comparer"; private const string ClearKeyName = "CK"; private const string ClearValueName = "CV"; private static readonly ArrayPool<int> s_bucketPool = ArrayPool<int>.Shared; private static readonly ArrayPool<Entry> s_entryPool = ArrayPool<Entry>.Shared; private int[] _buckets; private Entry[] _entries; private int _size; private int _count; private int _freeList; private int _freeCount; private int _version; private IEqualityComparer<TKey> _comparer; private KeyCollection _keys; private ValueCollection _values; private object _syncRoot; private readonly bool _clearKeyOnFree; private readonly bool _clearValueOnFree; public IEqualityComparer<TKey> Comparer { get { if (_comparer != null && !(_comparer is NonRandomizedStringEqualityComparer)) { return _comparer; } return EqualityComparer<TKey>.Default; } } public int Count => _count - _freeCount; public ClearMode KeyClearMode { get { if (!_clearKeyOnFree) { return ClearMode.Never; } return ClearMode.Always; } } public ClearMode ValueClearMode { get { if (!_clearValueOnFree) { return ClearMode.Never; } return ClearMode.Always; } } public KeyCollection Keys { get { if (_keys == null) { _keys = new KeyCollection(this); } return _keys; } } ICollection<TKey> IDictionary<TKey, TValue>.Keys { get { if (_keys == null) { _keys = new KeyCollection(this); } return _keys; } } IEnumerable<TKey> IReadOnlyDictionary<TKey, TValue>.Keys { get { if (_keys == null) { _keys = new KeyCollection(this); } return _keys; } } public ValueCollection Values { get { if (_values == null) { _values = new ValueCollection(this); } return _values; } } ICollection<TValue> IDictionary<TKey, TValue>.Values { get { if (_values == null) { _values = new ValueCollection(this); } return _values; } } IEnumerable<TValue> IReadOnlyDictionary<TKey, TValue>.Values { get { if (_values == null) { _values = new ValueCollection(this); } return _values; } } public TValue this[TKey key] { get { int num = FindEntry(key); if (num >= 0) { return _entries[num].value; } ThrowHelper.ThrowKeyNotFoundException(key); return default(TValue); } set { TryInsert(key, value, InsertionBehavior.OverwriteExisting); } } bool ICollection<KeyValuePair<TKey, TValue>>.IsReadOnly => false; bool ICollection.IsSynchronized => false; object ICollection.SyncRoot { get { if (_syncRoot == null) { Interlocked.CompareExchange<object>(ref _syncRoot, new object(), (object)null); } return _syncRoot; } } bool IDictionary.IsFixedSize => false; bool IDictionary.IsReadOnly => false; ICollection IDictionary.Keys => Keys; ICollection IDictionary.Values => Values; object IDictionary.this[object key] { get { if (IsCompatibleKey(key)) { int num = FindEntry((TKey)key); if (num >= 0) { return _entries[num].value; } } return null; } set { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } ThrowHelper.IfNullAndNullsAreIllegalThenThrow<TValue>(value, ExceptionArgument.value); try { TKey key2 = (TKey)key; try { this[key2] = (TValue)value; } catch (InvalidCastException) { ThrowHelper.ThrowWrongValueTypeArgumentException(value, typeof(TValue)); } } catch (InvalidCastException) { ThrowHelper.ThrowWrongKeyTypeArgumentException(key, typeof(TKey)); } } } public PooledDictionary() : this(0, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(ClearMode clearMode) : this(0, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(int capacity) : this(capacity, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(int capacity, ClearMode clearMode) : this(capacity, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IEqualityComparer<TKey> comparer) : this(0, ClearMode.Auto, comparer) { } public PooledDictionary(int capacity, IEqualityComparer<TKey> comparer) : this(capacity, ClearMode.Auto, comparer) { } public PooledDictionary(ClearMode clearMode, IEqualityComparer<TKey> comparer) : this(0, clearMode, comparer) { } public PooledDictionary(int capacity, ClearMode clearMode, IEqualityComparer<TKey> comparer) { if (capacity < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity); } if (capacity > 0) { Initialize(capacity); } if (comparer != EqualityComparer<TKey>.Default) { _comparer = comparer; } _clearKeyOnFree = ShouldClearKey(clearMode); _clearValueOnFree = ShouldClearValue(clearMode); if (typeof(TKey) == typeof(string) && _comparer == null) { _comparer = (IEqualityComparer<TKey>)NonRandomizedStringEqualityComparer.Default; } } public PooledDictionary(IDictionary<TKey, TValue> dictionary) : this(dictionary, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IDictionary<TKey, TValue> dictionary, ClearMode clearMode) : this(dictionary, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IDictionary<TKey, TValue> dictionary, IEqualityComparer<TKey> comparer) : this(dictionary, ClearMode.Auto, comparer) { } public PooledDictionary(IDictionary<TKey, TValue> dictionary, ClearMode clearMode, IEqualityComparer<TKey> comparer) : this(dictionary?.Count ?? 0, clearMode, comparer) { if (dictionary == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.dictionary); } if (dictionary is PooledDictionary<TKey, TValue> pooledDictionary) { int count = pooledDictionary._count; Entry[] entries = pooledDictionary._entries; for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { TryInsert(entries[i].key, entries[i].value, InsertionBehavior.ThrowOnExisting); } } return; } foreach (KeyValuePair<TKey, TValue> item in dictionary) { TryInsert(item.Key, item.Value, InsertionBehavior.ThrowOnExisting); } } public PooledDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection) : this(collection, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection, ClearMode clearMode) : this(collection, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection, IEqualityComparer<TKey> comparer) : this(collection, ClearMode.Auto, comparer) { } public PooledDictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection, ClearMode clearMode, IEqualityComparer<TKey> comparer) : this((collection as ICollection<KeyValuePair<TKey, TValue>>)?.Count ?? 0, clearMode, comparer) { if (collection == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); } foreach (KeyValuePair<TKey, TValue> item in collection) { TryInsert(item.Key, item.Value, InsertionBehavior.ThrowOnExisting); } } public PooledDictionary(IEnumerable<(TKey key, TValue value)> collection) : this(collection, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IEnumerable<(TKey key, TValue value)> collection, ClearMode clearMode) : this(collection, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(IEnumerable<(TKey key, TValue value)> collection, IEqualityComparer<TKey> comparer) : this(collection, ClearMode.Auto, comparer) { } public PooledDictionary(IEnumerable<(TKey key, TValue value)> collection, ClearMode clearMode, IEqualityComparer<TKey> comparer) : this((collection as ICollection<(TKey, TValue)>)?.Count ?? 0, clearMode, comparer) { if (collection == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); } foreach (var (key, value) in collection) { TryInsert(key, value, InsertionBehavior.ThrowOnExisting); } } public PooledDictionary((TKey key, TValue value)[] array) : this((ReadOnlySpan<(TKey, TValue)>)array.AsSpan(), ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary((TKey key, TValue value)[] array, ClearMode clearMode) : this((ReadOnlySpan<(TKey, TValue)>)array.AsSpan(), clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary((TKey key, TValue value)[] array, IEqualityComparer<TKey> comparer) : this((ReadOnlySpan<(TKey, TValue)>)array.AsSpan(), ClearMode.Auto, comparer) { } public PooledDictionary((TKey key, TValue value)[] array, ClearMode clearMode, IEqualityComparer<TKey> comparer) : this((ReadOnlySpan<(TKey, TValue)>)array.AsSpan(), clearMode, comparer) { } public PooledDictionary(ReadOnlySpan<(TKey key, TValue value)> span) : this(span, ClearMode.Auto, (IEqualityComparer<TKey>)null) { } public PooledDictionary(ReadOnlySpan<(TKey key, TValue value)> span, ClearMode clearMode) : this(span, clearMode, (IEqualityComparer<TKey>)null) { } public PooledDictionary(ReadOnlySpan<(TKey key, TValue value)> span, IEqualityComparer<TKey> comparer) : this(span, ClearMode.Auto, comparer) { } public PooledDictionary(ReadOnlySpan<(TKey key, TValue value)> span, ClearMode clearMode, IEqualityComparer<TKey> comparer) : this(span.Length, clearMode, comparer) { ReadOnlySpan<(TKey, TValue)> readOnlySpan = span; for (int i = 0; i < readOnlySpan.Length; i++) { var (key, value) = readOnlySpan[i]; TryInsert(key, value, InsertionBehavior.ThrowOnExisting); } } protected PooledDictionary(SerializationInfo info, StreamingContext context) { _clearKeyOnFree = ((bool?)info.GetValue("CK", typeof(bool))) ?? ShouldClearKey(ClearMode.Auto); _clearValueOnFree = ((bool?)info.GetValue("CV", typeof(bool))) ?? ShouldClearValue(ClearMode.Auto); HashHelpers.SerializationInfoTable.Add(this, info); } public void Add(TKey key, TValue value) { TryInsert(key, value, InsertionBehavior.ThrowOnExisting); } public void AddRange(IEnumerable<KeyValuePair<TKey, TValue>> enumerable) { if (enumerable == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.enumerable); } if (enumerable is ICollection<KeyValuePair<TKey, TValue>> collection) { EnsureCapacity(_count + collection.Count); } foreach (KeyValuePair<TKey, TValue> item in enumerable) { TryInsert(item.Key, item.Value, InsertionBehavior.ThrowOnExisting); } } public void AddRange(IEnumerable<(TKey key, TValue value)> enumerable) { if (enumerable == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.enumerable); } if (enumerable is ICollection<KeyValuePair<TKey, TValue>> collection) { EnsureCapacity(_count + collection.Count); } foreach (var (key, value) in enumerable) { TryInsert(key, value, InsertionBehavior.ThrowOnExisting); } } public void AddRange(ReadOnlySpan<(TKey key, TValue value)> span) { EnsureCapacity(_count + span.Length); ReadOnlySpan<(TKey, TValue)> readOnlySpan = span; for (int i = 0; i < readOnlySpan.Length; i++) { var (key, value) = readOnlySpan[i]; TryInsert(key, value, InsertionBehavior.ThrowOnExisting); } } public void AddRange((TKey key, TValue value)[] array) { AddRange(array.AsSpan()); } public void AddOrUpdate(TKey key, TValue addValue, Func<TKey, TValue, TValue> updater) { if (TryGetValue(key, out var value)) { TValue value2 = updater(key, value); TryInsert(key, value2, InsertionBehavior.OverwriteExisting); } else { TryInsert(key, addValue, InsertionBehavior.ThrowOnExisting); } } public void AddOrUpdate(TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updater) { if (TryGetValue(key, out var value)) { TValue value2 = updater(key, value); TryInsert(key, value2, InsertionBehavior.OverwriteExisting); } else { TValue value3 = addValueFactory(key); TryInsert(key, value3, InsertionBehavior.ThrowOnExisting); } } void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> keyValuePair) { Add(keyValuePair.Key, keyValuePair.Value); } bool ICollection<KeyValuePair<TKey, TValue>>.Contains(KeyValuePair<TKey, TValue> keyValuePair) { int num = FindEntry(keyValuePair.Key); if (num >= 0 && EqualityComparer<TValue>.Default.Equals(_entries[num].value, keyValuePair.Value)) { return true; } return false; } bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> keyValuePair) { int num = FindEntry(keyValuePair.Key); if (num >= 0 && EqualityComparer<TValue>.Default.Equals(_entries[num].value, keyValuePair.Value)) { Remove(keyValuePair.Key); return true; } return false; } public void Clear() { int count = _count; if (count > 0) { Array.Clear(_buckets, 0, _size); _count = 0; _freeList = -1; _freeCount = 0; _size = 0; Array.Clear(_entries, 0, count); _version++; } } public bool ContainsKey(TKey key) { return FindEntry(key) >= 0; } public bool ContainsValue(TValue value) { Entry[] entries = _entries; if (value == null) { for (int i = 0; i < _count; i++) { if (entries[i].hashCode >= 0 && entries[i].value == null) { return true; } } } else if (default(TValue) != null) { for (int j = 0; j < _count; j++) { if (entries[j].hashCode >= 0 && EqualityComparer<TValue>.Default.Equals(entries[j].value, value)) { return true; } } } else { EqualityComparer<TValue> @default = EqualityComparer<TValue>.Default; for (int k = 0; k < _count; k++) { if (entries[k].hashCode >= 0 && @default.Equals(entries[k].value, value)) { return true; } } } return false; } private void CopyTo(KeyValuePair<TKey, TValue>[] array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if ((uint)index > (uint)array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } int count = _count; Entry[] entries = _entries; for (int i = 0; i < count; i++) { if (entries[i].hashCode >= 0) { array[index++] = new KeyValuePair<TKey, TValue>(entries[i].key, entries[i].value); } } } public Enumerator GetEnumerator() { return new Enumerator(this, 2); } IEnumerator<KeyValuePair<TKey, TValue>> IEnumerable<KeyValuePair<TKey, TValue>>.GetEnumerator() { return new Enumerator(this, 2); } void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { GetObjectData(info, context); } protected virtual void GetObjectData(SerializationInfo info, StreamingContext context) { if (info == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.info); } info.AddValue("Version", _version); info.AddValue("Comparer", _comparer ?? EqualityComparer<TKey>.Default, typeof(IEqualityComparer<TKey>)); info.AddValue("HashSize", _size); info.AddValue("CK", _clearKeyOnFree); info.AddValue("CV", _clearValueOnFree); if (_buckets != null) { KeyValuePair<TKey, TValue>[] array = new KeyValuePair<TKey, TValue>[Count]; CopyTo(array, 0); info.AddValue("KeyValuePairs", array, typeof(KeyValuePair<TKey, TValue>[])); } } private int FindEntry(TKey key) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } int result = -1; int size = _size; if (size <= 0) { return result; } int[] buckets = _buckets; Entry[] entries = _entries; int num = 0; IEqualityComparer<TKey> comparer = _comparer; if (comparer == null) { int num2 = key.GetHashCode() & 0x7FFFFFFF; result = buckets[num2 % size] - 1; if (default(TKey) != null) { while ((uint)result < (uint)size && (entries[result].hashCode != num2 || !EqualityComparer<TKey>.Default.Equals(entries[result].key, key))) { result = entries[result].next; if (num >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num++; } } else { EqualityComparer<TKey> @default = EqualityComparer<TKey>.Default; while ((uint)result < (uint)size && (entries[result].hashCode != num2 || !@default.Equals(entries[result].key, key))) { result = entries[result].next; if (num >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num++; } } } else { int num3 = comparer.GetHashCode(key) & 0x7FFFFFFF; result = buckets[num3 % size] - 1; while ((uint)result < (uint)size && (entries[result].hashCode != num3 || !comparer.Equals(entries[result].key, key))) { result = entries[result].next; if (num >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num++; } } return result; } private int Initialize(int capacity) { _size = HashHelpers.GetPrime(capacity); _freeList = -1; _buckets = s_bucketPool.Rent(_size); Array.Clear(_buckets, 0, _buckets.Length); _entries = s_entryPool.Rent(_size); return _size; } private bool TryInsert(TKey key, TValue value, InsertionBehavior behavior) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } if (_buckets == null || _size == 0) { Initialize(0); } Entry[] entries = _entries; IEqualityComparer<TKey> comparer = _comparer; int size = _size; int num = (comparer?.GetHashCode(key) ?? key.GetHashCode()) & 0x7FFFFFFF; int num2 = 0; ref int reference = ref _buckets[num % size]; int num3 = reference - 1; if (comparer == null) { if (default(TKey) != null) { while ((uint)num3 < (uint)size) { if (entries[num3].hashCode == num && EqualityComparer<TKey>.Default.Equals(entries[num3].key, key)) { switch (behavior) { case InsertionBehavior.OverwriteExisting: entries[num3].value = value; _version++; return true; case InsertionBehavior.ThrowOnExisting: ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(key); break; } return false; } num3 = entries[num3].next; if (num2 >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num2++; } } else { EqualityComparer<TKey> @default = EqualityComparer<TKey>.Default; while ((uint)num3 < (uint)size) { if (entries[num3].hashCode == num && @default.Equals(entries[num3].key, key)) { switch (behavior) { case InsertionBehavior.OverwriteExisting: entries[num3].value = value; _version++; return true; case InsertionBehavior.ThrowOnExisting: ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(key); break; } return false; } num3 = entries[num3].next; if (num2 >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num2++; } } } else { while ((uint)num3 < (uint)size) { if (entries[num3].hashCode == num && comparer.Equals(entries[num3].key, key)) { switch (behavior) { case InsertionBehavior.OverwriteExisting: entries[num3].value = value; _version++; return true; case InsertionBehavior.ThrowOnExisting: ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(key); break; } return false; } num3 = entries[num3].next; if (num2 >= size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num2++; } } bool flag = false; int num4; if (_freeCount > 0) { num4 = _freeList; flag = true; _freeCount--; } else { int count = _count; if (count == size) { Resize(); size = _size; reference = ref _buckets[num % size]; } num4 = count; _count = count + 1; entries = _entries; } ref Entry reference2 = ref entries[num4]; if (flag) { _freeList = reference2.next; } reference2.hashCode = num; reference2.next = reference - 1; reference2.key = key; reference2.value = value; reference = num4 + 1; _version++; if (default(TKey) == null && num2 > 100 && comparer is NonRandomizedStringEqualityComparer) { _comparer = null; Resize(size, forceNewHashCodes: true); } return true; } public virtual void OnDeserialization(object sender) { HashHelpers.SerializationInfoTable.TryGetValue(this, out var value); if (value == null) { return; } int @int = value.GetInt32("Version"); int int2 = value.GetInt32("HashSize"); _comparer = (IEqualityComparer<TKey>)value.GetValue("Comparer", typeof(IEqualityComparer<TKey>)); if (int2 != 0) { Initialize(int2); KeyValuePair<TKey, TValue>[] array = (KeyValuePair<TKey, TValue>[])value.GetValue("KeyValuePairs", typeof(KeyValuePair<TKey, TValue>[])); if (array == null) { throw new SerializationException("Serialized PooledDictionary missing data."); } for (int i = 0; i < array.Length; i++) { if (array[i].Key == null) { throw new SerializationException("Serialized PooledDictionary had null key."); } Add(array[i].Key, array[i].Value); } } else { _buckets = null; } _version = @int; HashHelpers.SerializationInfoTable.Remove(this); } private void Resize() { Resize(HashHelpers.ExpandPrime(_count), forceNewHashCodes: false); } private void Resize(int newSize, bool forceNewHashCodes) { int count = _count; int[] array; Entry[] array2; bool flag; if (_buckets.Length >= newSize && _entries.Length >= newSize) { Array.Clear(_buckets, 0, _buckets.Length); Array.Clear(_entries, _size, newSize - _size); array = _buckets; array2 = _entries; flag = false; } else { array = s_bucketPool.Rent(newSize); array2 = s_entryPool.Rent(newSize); Array.Clear(array, 0, array.Length); Array.Copy(_entries, 0, array2, 0, count); flag = true; } if (default(TKey) == null && forceNewHashCodes) { for (int i = 0; i < count; i++) { if (array2[i].hashCode >= 0) { array2[i].hashCode = array2[i].key.GetHashCode() & 0x7FFFFFFF; } } } for (int j = 0; j < count; j++) { if (array2[j].hashCode >= 0) { int num = array2[j].hashCode % newSize; array2[j].next = array[num] - 1; array[num] = j + 1; } } if (flag) { ReturnArrays(); _buckets = array; _entries = array2; } _size = newSize; } public bool Remove(TKey key) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } int[] buckets = _buckets; Entry[] entries = _entries; int num = 0; if (_size > 0) { int num2 = (_comparer?.GetHashCode(key) ?? key.GetHashCode()) & 0x7FFFFFFF; int num3 = num2 % _size; int num4 = -1; int num5 = buckets[num3] - 1; while (num5 >= 0) { ref Entry reference = ref entries[num5]; if (reference.hashCode == num2 && (_comparer?.Equals(reference.key, key) ?? EqualityComparer<TKey>.Default.Equals(reference.key, key))) { if (num4 < 0) { buckets[num3] = reference.next + 1; } else { entries[num4].next = reference.next; } reference.hashCode = -1; reference.next = _freeList; if (_clearKeyOnFree) { reference.key = default(TKey); } if (_clearValueOnFree) { reference.value = default(TValue); } _freeList = num5; _freeCount++; _version++; return true; } num4 = num5; num5 = reference.next; if (num >= _size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num++; } } return false; } public bool Remove(TKey key, out TValue value) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } int[] buckets = _buckets; Entry[] entries = _entries; int num = 0; int num2 = (_comparer?.GetHashCode(key) ?? key.GetHashCode()) & 0x7FFFFFFF; int num3 = num2 % _size; int num4 = -1; int num5 = buckets[num3] - 1; while (num5 >= 0) { ref Entry reference = ref entries[num5]; if (reference.hashCode == num2 && (_comparer?.Equals(reference.key, key) ?? EqualityComparer<TKey>.Default.Equals(reference.key, key))) { if (num4 < 0) { buckets[num3] = reference.next + 1; } else { entries[num4].next = reference.next; } value = reference.value; reference.hashCode = -1; reference.next = _freeList; if (_clearKeyOnFree) { reference.key = default(TKey); } if (_clearValueOnFree) { reference.value = default(TValue); } _freeList = num5; _freeCount++; return true; } num4 = num5; num5 = reference.next; if (num >= _size) { ThrowHelper.ThrowInvalidOperationException_ConcurrentOperationsNotSupported(); } num++; } value = default(TValue); return false; } public bool TryGetValue(TKey key, out TValue value) { int num = FindEntry(key); if (num >= 0) { value = _entries[num].value; return true; } value = default(TValue); return false; } public bool TryAdd(TKey key, TValue value) { return TryInsert(key, value, InsertionBehavior.None); } public TValue GetOrAdd(TKey key, TValue addValue) { if (TryGetValue(key, out var value)) { return value; } Add(key, addValue); return addValue; } public TValue GetOrAdd(TKey key, Func<TKey, TValue> valueFactory) { if (TryGetValue(key, out var value)) { return value; } TValue val = valueFactory(key); Add(key, val); return val; } void ICollection<KeyValuePair<TKey, TValue>>.CopyTo(KeyValuePair<TKey, TValue>[] array, int index) { CopyTo(array, index); } void ICollection.CopyTo(Array array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (array.Rank != 1) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported); } if (array.GetLowerBound(0) != 0) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_NonZeroLowerBound); } if ((uint)index > (uint)array.Length) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (array.Length - index < Count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_ArrayPlusOffTooSmall); } if (array is KeyValuePair<TKey, TValue>[] array2) { CopyTo(array2, index); return; } if (array is DictionaryEntry[] array3) { Entry[] entries = _entries; for (int i = 0; i < _count; i++) { if (entries[i].hashCode >= 0) { array3[index++] = new DictionaryEntry(entries[i].key, entries[i].value); } } return; } if (array is object[] array4) { try { int count = _count; Entry[] entries2 = _entries; for (int j = 0; j < count; j++) { if (entries2[j].hashCode >= 0) { array4[index++] = new KeyValuePair<TKey, TValue>(entries2[j].key, entries2[j].value); } } return; } catch (ArrayTypeMismatchException) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); return; } } ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } IEnumerator IEnumerable.GetEnumerator() { return new Enumerator(this, 2); } public int EnsureCapacity(int capacity) { if (capacity < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity); } int size = _size; if (size >= capacity) { return size; } _version++; if (_buckets == null || _size == 0) { return Initialize(capacity); } int prime = HashHelpers.GetPrime(capacity); Resize(prime, forceNewHashCodes: false); return prime; } public void TrimExcess() { TrimExcess(Count); } public void TrimExcess(int capacity) { if (capacity < Count) { throw new ArgumentOutOfRangeException("capacity"); } int prime = HashHelpers.GetPrime(capacity); Entry[] entries = _entries; int[] buckets = _buckets; int num = ((entries != null) ? entries.Length : 0); if (prime >= num) { return; } int count = _count; _version++; Initialize(prime); Entry[] entries2 = _entries; int[] buckets2 = _buckets; int num2 = 0; for (int i = 0; i < count; i++) { int hashCode = entries[i].hashCode; if (hashCode >= 0) { ref Entry reference = ref entries2[num2]; reference = entries[i]; int num3 = hashCode % prime; reference.next = buckets2[num3] - 1; buckets2[num3] = num2 + 1; num2++; } } _count = num2; _size = prime; _freeCount = 0; s_bucketPool.Return(buckets); s_entryPool.Return(entries2, _clearKeyOnFree || _clearValueOnFree); } private void ReturnArrays() { Entry[] entries = _entries; if (entries != null && entries.Length != 0) { try { s_entryPool.Return(_entries, _clearKeyOnFree || _clearValueOnFree); } catch (ArgumentException) { } } int[] buckets = _buckets; if (buckets != null && buckets.Length != 0) { try { s_bucketPool.Return(_buckets); } catch (ArgumentException) { } } _entries = null; _buckets = null; } private static bool ShouldClearKey(ClearMode mode) { return mode != ClearMode.Never; } private static bool ShouldClearValue(ClearMode mode) { return mode != ClearMode.Never; } private static bool IsCompatibleKey(object key) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } return key is TKey; } void IDictionary.Add(object key, object value) { if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } ThrowHelper.IfNullAndNullsAreIllegalThenThrow<TValue>(value, ExceptionArgument.value); try { TKey key2 = (TKey)key; try { Add(key2, (TValue)value); } catch (InvalidCastException) { ThrowHelper.ThrowWrongValueTypeArgumentException(value, typeof(TValue)); } } catch (InvalidCastException) { ThrowHelper.ThrowWrongKeyTypeArgumentException(key, typeof(TKey)); } } bool IDictionary.Contains(object key) { if (IsCompatibleKey(key)) { return ContainsKey((TKey)key); } return false; } IDictionaryEnumerator IDictionary.GetEnumerator() { return new Enumerator(this, 1); } void IDictionary.Remove(object key) { if (IsCompatibleKey(key)) { Remove((TKey)key); } } public void Dispose() { ReturnArrays(); _count = 0; _size = 0; _freeList = -1; _freeCount = 0; } } public static class PooledExtensions { public static PooledList<T> ToPooledList<T>(this IEnumerable<T> items) { return new PooledList<T>(items); } public static PooledList<T> ToPooledList<T>(this T[] array) { return new PooledList<T>(array.AsSpan()); } public static PooledList<T> ToPooledList<T>(this ReadOnlySpan<T> span) { return new PooledList<T>(span); } public static PooledList<T> ToPooledList<T>(this Span<T> span) { return new PooledList<T>(span); } public static PooledList<T> ToPooledList<T>(this ReadOnlyMemory<T> memory) { return new PooledList<T>(memory.Span); } public static PooledList<T> ToPooledList<T>(this Memory<T> memory) { return new PooledList<T>(memory.Span); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TSource, TKey, TValue>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> valueSelector, IEqualityComparer<TKey> comparer = null) { if (source == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } PooledDictionary<TKey, TValue> pooledDictionary = new PooledDictionary<TKey, TValue>((source as ICollection<TSource>)?.Count ?? 0, comparer); foreach (TSource item in source) { pooledDictionary.Add(keySelector(item), valueSelector(item)); } return pooledDictionary; } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TSource, TKey, TValue>(this ReadOnlySpan<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> valueSelector, IEqualityComparer<TKey> comparer = null) { PooledDictionary<TKey, TValue> pooledDictionary = new PooledDictionary<TKey, TValue>(source.Length, comparer); ReadOnlySpan<TSource> readOnlySpan = source; for (int i = 0; i < readOnlySpan.Length; i++) { TSource arg = readOnlySpan[i]; pooledDictionary.Add(keySelector(arg), valueSelector(arg)); } return pooledDictionary; } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TSource, TKey, TValue>(this Span<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> valueSelector, IEqualityComparer<TKey> comparer) { return ((ReadOnlySpan<TSource>)source).ToPooledDictionary(keySelector, valueSelector, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TSource, TKey, TValue>(this ReadOnlyMemory<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> valueSelector, IEqualityComparer<TKey> comparer) { return source.Span.ToPooledDictionary(keySelector, valueSelector, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TSource, TKey, TValue>(this Memory<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TValue> valueSelector, IEqualityComparer<TKey> comparer) { return source.Span.ToPooledDictionary(keySelector, valueSelector, comparer); } public static PooledDictionary<TKey, TSource> ToPooledDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer = null) { if (source == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } PooledDictionary<TKey, TSource> pooledDictionary = new PooledDictionary<TKey, TSource>((source as ICollection<TSource>)?.Count ?? 0, comparer); foreach (TSource item in source) { pooledDictionary.Add(keySelector(item), item); } return pooledDictionary; } public static PooledDictionary<TKey, TSource> ToPooledDictionary<TSource, TKey>(this ReadOnlySpan<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer = null) { PooledDictionary<TKey, TSource> pooledDictionary = new PooledDictionary<TKey, TSource>(source.Length, comparer); ReadOnlySpan<TSource> readOnlySpan = source; for (int i = 0; i < readOnlySpan.Length; i++) { TSource val = readOnlySpan[i]; pooledDictionary.Add(keySelector(val), val); } return pooledDictionary; } public static PooledDictionary<TKey, TSource> ToPooledDictionary<TSource, TKey>(this Span<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer = null) { return ((ReadOnlySpan<TSource>)source).ToPooledDictionary(keySelector, comparer); } public static PooledDictionary<TKey, TSource> ToPooledDictionary<TSource, TKey>(this ReadOnlyMemory<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer = null) { return source.Span.ToPooledDictionary(keySelector, comparer); } public static PooledDictionary<TKey, TSource> ToPooledDictionary<TSource, TKey>(this Memory<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer = null) { return source.Span.ToPooledDictionary(keySelector, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TKey, TValue>(this IEnumerable<(TKey, TValue)> source, IEqualityComparer<TKey> comparer = null) { return new PooledDictionary<TKey, TValue>(source, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> source, IEqualityComparer<TKey> comparer = null) { return new PooledDictionary<TKey, TValue>(source, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TKey, TValue>(this IEnumerable<Tuple<TKey, TValue>> source, IEqualityComparer<TKey> comparer = null) { if (source == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } PooledDictionary<TKey, TValue> pooledDictionary = new PooledDictionary<TKey, TValue>((source as ICollection<Tuple<TKey, TValue>>)?.Count ?? 0, comparer); foreach (Tuple<TKey, TValue> item in source) { pooledDictionary.Add(item.Item1, item.Item2); } return pooledDictionary; } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TKey, TValue>(this ReadOnlySpan<(TKey, TValue)> source, IEqualityComparer<TKey> comparer = null) { return new PooledDictionary<TKey, TValue>(source, comparer); } public static PooledDictionary<TKey, TValue> ToPooledDictionary<TKey, TValue>(this Span<(TKey, TValue)> source, IEqualityComparer<TKey> comparer = null) { return new PooledDictionary<TKey, TValue>(source, comparer); } public static PooledSet<T> ToPooledSet<T>(this IEnumerable<T> source, IEqualityComparer<T> comparer = null) { return new PooledSet<T>(source, comparer); } public static PooledSet<T> ToPooledSet<T>(this Span<T> source, IEqualityComparer<T> comparer = null) { return new PooledSet<T>(source, comparer); } public static PooledSet<T> ToPooledSet<T>(this ReadOnlySpan<T> source, IEqualityComparer<T> comparer = null) { return new PooledSet<T>(source, comparer); } public static PooledSet<T> ToPooledSet<T>(this Memory<T> source, IEqualityComparer<T> comparer = null) { return new PooledSet<T>(source.Span, comparer); } public static PooledSet<T> ToPooledSet<T>(this ReadOnlyMemory<T> source, IEqualityComparer<T> comparer = null) { return new PooledSet<T>(source.Span, comparer); } public static PooledStack<T> ToPooledStack<T>(this IEnumerable<T> items) { return new PooledStack<T>(items); } public static PooledStack<T> ToPooledStack<T>(this T[] array) { return new PooledStack<T>(array.AsSpan()); } public static PooledStack<T> ToPooledStack<T>(this ReadOnlySpan<T> span) { return new PooledStack<T>(span); } public static PooledStack<T> ToPooledStack<T>(this Span<T> span) { return new PooledStack<T>(span); } public static PooledStack<T> ToPooledStack<T>(this ReadOnlyMemory<T> memory) { return new PooledStack<T>(memory.Span); } public static PooledStack<T> ToPooledStack<T>(this Memory<T> memory) { return new PooledStack<T>(memory.Span); } public static PooledQueue<T> ToPooledQueue<T>(this IEnumerable<T> items) { return new PooledQueue<T>(items); } public static PooledQueue<T> ToPooledQueue<T>(this ReadOnlySpan<T> span) { return new PooledQueue<T>(span); } public static PooledQueue<T> ToPooledQueue<T>(this Span<T> span) { return new PooledQueue<T>(span); } public static PooledQueue<T> ToPooledQueue<T>(this ReadOnlyMemory<T> memory) { return new PooledQueue<T>(memory.Span); } public static PooledQueue<T> ToPooledQueue<T>(this Memory<T> memory) { return new PooledQueue<T>(memory.Span); } public static PooledQueue<T> ToPooledQueue<T>(this T[] array) { return new PooledQueue<T>(array.AsSpan()); } } [Serializable] [DebuggerDisplay("Count = {Count}")] [DebuggerTypeProxy(typeof(ICollectionDebugView<>))] public class PooledList<T> : IList<T>, ICollection<T>, IEnumerable<T>, IEnumerable, IReadOnlyPooledList<T>, IReadOnlyList<T>, IReadOnlyCollection<T>, IList, ICollection, IDisposable, IDeserializationCallback { public struct Enumerator : IEnumerator<T>, IEnumerator, IDisposable { private readonly PooledList<T> _list; private int _index; private readonly int _version; private T _current; public T Current => _current; object IEnumerator.Current { get { if (_index == 0 || _index == _list._size + 1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumOpCantHappen(); } return Current; } } internal Enumerator(PooledList<T> list) { _list = list; _index = 0; _version = list._version; _current = default(T); } public void Dispose() { } public bool MoveNext() { PooledList<T> list = _list; if (_version == list._version && (uint)_index < (uint)list._size) { _current = list._items[_index]; _index++; return true; } return MoveNextRare(); } private bool MoveNextRare() { if (_version != _list._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = _list._size + 1; _current = default(T); return false; } void IEnumerator.Reset() { if (_version != _list._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = 0; _current = default(T); } } private readonly struct Comparer : IComparer<T> { private readonly Func<T, T, int> _comparison; public Comparer(Func<T, T, int> comparison) { _comparison = comparison; } public int Compare(T x, T y) { return _comparison(x, y); } } private const int MaxArrayLength = 2146435071; private const int DefaultCapacity = 4; private static readonly T[] s_emptyArray = Array.Empty<T>(); [NonSerialized] private ArrayPool<T> _pool; [NonSerialized] private object _syncRoot; private T[] _items; private int _size; private int _version; private readonly bool _clearOnFree; public Span<T> Span => _items.AsSpan(0, _size); ReadOnlySpan<T> IReadOnlyPooledList<T>.Span => Span; public int Capacity { get { return _items.Length; } set { if (value < _size) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.value, ExceptionResource.ArgumentOutOfRange_SmallCapacity); } if (value == _items.Length) { return; } if (value > 0) { T[] array = _pool.Rent(value); if (_size > 0) { Array.Copy(_items, array, _size); } ReturnArray(); _items = array; } else { ReturnArray(); _size = 0; } } } public int Count => _size; public ClearMode ClearMode { get { if (!_clearOnFree) { return ClearMode.Never; } return ClearMode.Always; } } bool IList.IsFixedSize => false; bool ICollection<T>.IsReadOnly => false; bool IList.IsReadOnly => false; int ICollection.Count => _size; bool ICollection.IsSynchronized => false; object ICollection.SyncRoot { get { if (_syncRoot == null) { Interlocked.CompareExchange<object>(ref _syncRoot, new object(), (object)null); } return _syncRoot; } } public T this[int index] { get { if ((uint)index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } return _items[index]; } set { if ((uint)index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } _items[index] = value; _version++; } } object IList.this[int index] { get { return this[index]; } set { ThrowHelper.IfNullAndNullsAreIllegalThenThrow<T>(value, ExceptionArgument.value); try { this[index] = (T)value; } catch (InvalidCastException) { ThrowHelper.ThrowWrongValueTypeArgumentException(value, typeof(T)); } } } public PooledList() : this(ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledList(ClearMode clearMode) : this(clearMode, ArrayPool<T>.Shared) { } public PooledList(ArrayPool<T> customPool) : this(ClearMode.Auto, customPool) { } public PooledList(ClearMode clearMode, ArrayPool<T> customPool) { _items = s_emptyArray; _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); } public PooledList(int capacity) : this(capacity, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledList(int capacity, bool sizeToCapacity) : this(capacity, ClearMode.Auto, ArrayPool<T>.Shared, sizeToCapacity) { } public PooledList(int capacity, ClearMode clearMode) : this(capacity, clearMode, ArrayPool<T>.Shared) { } public PooledList(int capacity, ClearMode clearMode, bool sizeToCapacity) : this(capacity, clearMode, ArrayPool<T>.Shared, sizeToCapacity) { } public PooledList(int capacity, ArrayPool<T> customPool) : this(capacity, ClearMode.Auto, customPool) { } public PooledList(int capacity, ArrayPool<T> customPool, bool sizeToCapacity) : this(capacity, ClearMode.Auto, customPool, sizeToCapacity) { } public PooledList(int capacity, ClearMode clearMode, ArrayPool<T> customPool) : this(capacity, clearMode, customPool, sizeToCapacity: false) { } public PooledList(int capacity, ClearMode clearMode, ArrayPool<T> customPool, bool sizeToCapacity) { if (capacity < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); if (capacity == 0) { _items = s_emptyArray; } else { _items = _pool.Rent(capacity); } if (sizeToCapacity) { _size = capacity; if (clearMode != ClearMode.Never) { Array.Clear(_items, 0, _size); } } } public PooledList(T[] array) : this((ReadOnlySpan<T>)array.AsSpan(), ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledList(T[] array, ClearMode clearMode) : this((ReadOnlySpan<T>)array.AsSpan(), clearMode, ArrayPool<T>.Shared) { } public PooledList(T[] array, ArrayPool<T> customPool) : this((ReadOnlySpan<T>)array.AsSpan(), ClearMode.Auto, customPool) { } public PooledList(T[] array, ClearMode clearMode, ArrayPool<T> customPool) : this((ReadOnlySpan<T>)array.AsSpan(), clearMode, customPool) { } public PooledList(ReadOnlySpan<T> span) : this(span, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledList(ReadOnlySpan<T> span, ClearMode clearMode) : this(span, clearMode, ArrayPool<T>.Shared) { } public PooledList(ReadOnlySpan<T> span, ArrayPool<T> customPool) : this(span, ClearMode.Auto, customPool) { } public PooledList(ReadOnlySpan<T> span, ClearMode clearMode, ArrayPool<T> customPool) { _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); int length = span.Length; if (length == 0) { _items = s_emptyArray; return; } _items = _pool.Rent(length); span.CopyTo(_items); _size = length; } public PooledList(IEnumerable<T> collection) : this(collection, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledList(IEnumerable<T> collection, ClearMode clearMode) : this(collection, clearMode, ArrayPool<T>.Shared) { } public PooledList(IEnumerable<T> collection, ArrayPool<T> customPool) : this(collection, ClearMode.Auto, customPool) { } public PooledList(IEnumerable<T> collection, ClearMode clearMode, ArrayPool<T> customPool) { _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); if (collection != null) { if (!(collection is ICollection<T> collection2)) { _size = 0; _items = s_emptyArray; { foreach (T item in collection) { Add(item); } return; } } ICollection<T> collection3 = collection2; int count = collection3.Count; if (count == 0) { _items = s_emptyArray; return; } _items = _pool.Rent(count); collection3.CopyTo(_items, 0); _size = count; } else { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); } } private static bool IsCompatibleObject(object value) { if (!(value is T)) { if (value == null) { return default(T) == null; } return false; } return true; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(T item) { _version++; int size = _size; if ((uint)size < (uint)_items.Length) { _size = size + 1; _items[size] = item; } else { AddWithResize(item); } } [MethodImpl(MethodImplOptions.NoInlining)] private void AddWithResize(T item) { int size = _size; EnsureCapacity(size + 1); _size = size + 1; _items[size] = item; } int IList.Add(object item) { ThrowHelper.IfNullAndNullsAreIllegalThenThrow<T>(item, ExceptionArgument.item); try { Add((T)item); } catch (InvalidCastException) { ThrowHelper.ThrowWrongValueTypeArgumentException(item, typeof(T)); } return Count - 1; } public void AddRange(IEnumerable<T> collection) { InsertRange(_size, collection); } public void AddRange(T[] array) { AddRange(array.AsSpan()); } public void AddRange(ReadOnlySpan<T> span) { Span<T> destination = InsertSpan(_size, span.Length, clearOutput: false); span.CopyTo(destination); } public Span<T> AddSpan(int count) { return InsertSpan(_size, count); } public ReadOnlyCollection<T> AsReadOnly() { return new ReadOnlyCollection<T>(this); } public int BinarySearch(int index, int count, T item, IComparer<T> comparer) { if (index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size - index < count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } return Array.BinarySearch(_items, index, count, item, comparer); } public int BinarySearch(T item) { return BinarySearch(0, Count, item, null); } public int BinarySearch(T item, IComparer<T> comparer) { return BinarySearch(0, Count, item, comparer); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Clear() { _version++; int size = _size; _size = 0; if (size > 0 && _clearOnFree) { Array.Clear(_items, 0, _size); } } public bool Contains(T item) { if (_size != 0) { return IndexOf(item) != -1; } return false; } bool IList.Contains(object item) { if (IsCompatibleObject(item)) { return Contains((T)item); } return false; } public PooledList<TOutput> ConvertAll<TOutput>(Func<T, TOutput> converter) { if (converter == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.converter); } PooledList<TOutput> pooledList = new PooledList<TOutput>(_size); for (int i = 0; i < _size; i++) { pooledList._items[i] = converter(_items[i]); } pooledList._size = _size; return pooledList; } public void CopyTo(Span<T> span) { if (span.Length < Count) { throw new ArgumentException("Destination span is shorter than the list to be copied."); } Span.CopyTo(span); } void ICollection<T>.CopyTo(T[] array, int arrayIndex) { Array.Copy(_items, 0, array, arrayIndex, _size); } void ICollection.CopyTo(Array array, int arrayIndex) { if (array != null && array.Rank != 1) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_RankMultiDimNotSupported); } try { Array.Copy(_items, 0, array, arrayIndex, _size); } catch (ArrayTypeMismatchException) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } } private void EnsureCapacity(int min) { if (_items.Length < min) { int num = ((_items.Length == 0) ? 4 : (_items.Length * 2)); if ((uint)num > 2146435071u) { num = 2146435071; } if (num < min) { num = min; } Capacity = num; } } public bool Exists(Func<T, bool> match) { return FindIndex(match) != -1; } public bool TryFind(Func<T, bool> match, out T result) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } for (int i = 0; i < _size; i++) { if (match(_items[i])) { result = _items[i]; return true; } } result = default(T); return false; } public PooledList<T> FindAll(Func<T, bool> match) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } PooledList<T> pooledList = new PooledList<T>(); for (int i = 0; i < _size; i++) { if (match(_items[i])) { pooledList.Add(_items[i]); } } return pooledList; } public int FindIndex(Func<T, bool> match) { return FindIndex(0, _size, match); } public int FindIndex(int startIndex, Func<T, bool> match) { return FindIndex(startIndex, _size - startIndex, match); } public int FindIndex(int startIndex, int count, Func<T, bool> match) { if ((uint)startIndex > (uint)_size) { ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index(); } if (count < 0 || startIndex > _size - count) { ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count(); } if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } int num = startIndex + count; for (int i = startIndex; i < num; i++) { if (match(_items[i])) { return i; } } return -1; } public bool TryFindLast(Func<T, bool> match, out T result) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } for (int num = _size - 1; num >= 0; num--) { if (match(_items[num])) { result = _items[num]; return true; } } result = default(T); return false; } public int FindLastIndex(Func<T, bool> match) { return FindLastIndex(_size - 1, _size, match); } public int FindLastIndex(int startIndex, Func<T, bool> match) { return FindLastIndex(startIndex, startIndex + 1, match); } public int FindLastIndex(int startIndex, int count, Func<T, bool> match) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } if (_size == 0) { if (startIndex != -1) { ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index(); } } else if ((uint)startIndex >= (uint)_size) { ThrowHelper.ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_Index(); } if (count < 0 || startIndex - count + 1 < 0) { ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count(); } int num = startIndex - count; for (int num2 = startIndex; num2 > num; num2--) { if (match(_items[num2])) { return num2; } } return -1; } public void ForEach(Action<T> action) { if (action == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.action); } int version = _version; for (int i = 0; i < _size; i++) { if (version != _version) { break; } action(_items[i]); } if (version != _version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } } public Enumerator GetEnumerator() { return new Enumerator(this); } IEnumerator<T> IEnumerable<T>.GetEnumerator() { return new Enumerator(this); } IEnumerator IEnumerable.GetEnumerator() { return new Enumerator(this); } public Span<T> GetRange(int index, int count) { if (index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size - index < count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } return Span.Slice(index, count); } public int IndexOf(T item) { return Array.IndexOf(_items, item, 0, _size); } int IList.IndexOf(object item) { if (IsCompatibleObject(item)) { return IndexOf((T)item); } return -1; } public int IndexOf(T item, int index) { if (index > _size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } return Array.IndexOf(_items, item, index, _size - index); } public int IndexOf(T item, int index, int count) { if (index > _size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } if (count < 0 || index > _size - count) { ThrowHelper.ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count(); } return Array.IndexOf(_items, item, index, count); } public void Insert(int index, T item) { if ((uint)index > (uint)_size) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_ListInsert); } if (_size == _items.Length) { EnsureCapacity(_size + 1); } if (index < _size) { Array.Copy(_items, index, _items, index + 1, _size - index); } _items[index] = item; _size++; _version++; } void IList.Insert(int index, object item) { ThrowHelper.IfNullAndNullsAreIllegalThenThrow<T>(item, ExceptionArgument.item); try { Insert(index, (T)item); } catch (InvalidCastException) { ThrowHelper.ThrowWrongValueTypeArgumentException(item, typeof(T)); } } public void InsertRange(int index, IEnumerable<T> collection) { if ((uint)index > (uint)_size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } if (collection != null) { if (collection is ICollection<T> collection2) { ICollection<T> collection3 = collection2; int count = collection3.Count; if (count > 0) { EnsureCapacity(_size + count); if (index < _size) { Array.Copy(_items, index, _items, index + count, _size - index); } if (this == collection3) { Array.Copy(_items, 0, _items, index, index); Array.Copy(_items, index + count, _items, index * 2, _size - index); } else { collection3.CopyTo(_items, index); } _size += count; } } else { using IEnumerator<T> enumerator = collection.GetEnumerator(); while (enumerator.MoveNext()) { Insert(index++, enumerator.Current); } } } else { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection); } _version++; } public void InsertRange(int index, ReadOnlySpan<T> span) { Span<T> destination = InsertSpan(index, span.Length, clearOutput: false); span.CopyTo(destination); } public void InsertRange(int index, T[] array) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } InsertRange(index, array.AsSpan()); } public Span<T> InsertSpan(int index, int count) { return InsertSpan(index, count, clearOutput: true); } private Span<T> InsertSpan(int index, int count, bool clearOutput) { EnsureCapacity(_size + count); if (index < _size) { Array.Copy(_items, index, _items, index + count, _size - index); } _size += count; _version++; Span<T> result = _items.AsSpan(index, count); if (clearOutput && _clearOnFree) { result.Clear(); } return result; } public int LastIndexOf(T item) { if (_size == 0) { return -1; } return LastIndexOf(item, _size - 1, _size); } public int LastIndexOf(T item, int index) { if (index >= _size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } return LastIndexOf(item, index, index + 1); } public int LastIndexOf(T item, int index, int count) { if (Count != 0 && index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (Count != 0 && count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size == 0) { return -1; } if (index >= _size) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_BiggerThanCollection); } if (count > index + 1) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_BiggerThanCollection); } return Array.LastIndexOf(_items, item, index, count); } public bool Remove(T item) { int num = IndexOf(item); if (num >= 0) { RemoveAt(num); return true; } return false; } void IList.Remove(object item) { if (IsCompatibleObject(item)) { Remove((T)item); } } public int RemoveAll(Func<T, bool> match) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } int i; for (i = 0; i < _size && !match(_items[i]); i++) { } if (i >= _size) { return 0; } int j = i + 1; while (j < _size) { for (; j < _size && match(_items[j]); j++) { } if (j < _size) { _items[i++] = _items[j++]; } } if (_clearOnFree) { Array.Clear(_items, i, _size - i); } int result = _size - i; _size = i; _version++; return result; } public void RemoveAt(int index) { if ((uint)index >= (uint)_size) { ThrowHelper.ThrowArgumentOutOfRange_IndexException(); } _size--; if (index < _size) { Array.Copy(_items, index + 1, _items, index, _size - index); } _version++; if (_clearOnFree) { _items[_size] = default(T); } } public void RemoveRange(int index, int count) { if (index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size - index < count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } if (count > 0) { _size -= count; if (index < _size) { Array.Copy(_items, index + count, _items, index, _size - index); } _version++; if (_clearOnFree) { Array.Clear(_items, _size, count); } } } public void Reverse() { Reverse(0, _size); } public void Reverse(int index, int count) { if (index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size - index < count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } if (count > 1) { Array.Reverse((Array)_items, index, count); } _version++; } public void Sort() { Sort(0, Count, null); } public void Sort(IComparer<T> comparer) { Sort(0, Count, comparer); } public void Sort(int index, int count, IComparer<T> comparer) { if (index < 0) { ThrowHelper.ThrowIndexArgumentOutOfRange_NeedNonNegNumException(); } if (count < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } if (_size - index < count) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } if (count > 1) { Array.Sort(_items, index, count, comparer); } _version++; } public void Sort(Func<T, T, int> comparison) { if (comparison == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.comparison); } if (_size > 1) { Array.Sort(_items, 0, _size, new Comparer(comparison)); } _version++; } public T[] ToArray() { if (_size == 0) { return s_emptyArray; } return Span.ToArray(); } public void TrimExcess() { int num = (int)((double)_items.Length * 0.9); if (_size < num) { Capacity = _size; } } public bool TrueForAll(Func<T, bool> match) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } for (int i = 0; i < _size; i++) { if (!match(_items[i])) { return false; } } return true; } private void ReturnArray() { if (_items.Length != 0) { try { _pool.Return(_items, _clearOnFree); } catch (ArgumentException) { } _items = s_emptyArray; } } private static bool ShouldClear(ClearMode mode) { return mode != ClearMode.Never; } public void Dispose() { ReturnArray(); _size = 0; _version++; } void IDeserializationCallback.OnDeserialization(object sender) { _pool = ArrayPool<T>.Shared; } } [Serializable] [DebuggerTypeProxy(typeof(QueueDebugView<>))] [DebuggerDisplay("Count = {Count}")] public class PooledQueue<T> : IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T>, IDisposable, IDeserializationCallback { public struct Enumerator : IEnumerator<T>, IEnumerator, IDisposable { private readonly PooledQueue<T> _q; private readonly int _version; private int _index; private T _currentElement; public T Current { get { if (_index < 0) { ThrowEnumerationNotStartedOrEnded(); } return _currentElement; } } object IEnumerator.Current => Current; internal Enumerator(PooledQueue<T> q) { _q = q; _version = q._version; _index = -1; _currentElement = default(T); } public void Dispose() { _index = -2; _currentElement = default(T); } public bool MoveNext() { if (_version != _q._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } if (_index == -2) { return false; } _index++; if (_index == _q._size) { _index = -2; _currentElement = default(T); return false; } T[] array = _q._array; int num = array.Length; int num2 = _q._head + _index; if (num2 >= num) { num2 -= num; } _currentElement = array[num2]; return true; } private void ThrowEnumerationNotStartedOrEnded() { if (_index == -1) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumNotStarted(); } else { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumEnded(); } } void IEnumerator.Reset() { if (_version != _q._version) { ThrowHelper.ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion(); } _index = -1; _currentElement = default(T); } } private const int MinimumGrow = 4; private const int GrowFactor = 200; [NonSerialized] private ArrayPool<T> _pool; [NonSerialized] private object _syncRoot; private T[] _array; private int _head; private int _tail; private int _size; private int _version; private readonly bool _clearOnFree; public int Count => _size; public ClearMode ClearMode { get { if (!_clearOnFree) { return ClearMode.Never; } return ClearMode.Always; } } bool ICollection.IsSynchronized => false; object ICollection.SyncRoot { get { if (_syncRoot == null) { Interlocked.CompareExchange<object>(ref _syncRoot, new object(), (object)null); } return _syncRoot; } } public PooledQueue() : this(ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledQueue(ClearMode clearMode) : this(clearMode, ArrayPool<T>.Shared) { } public PooledQueue(ArrayPool<T> customPool) : this(ClearMode.Auto, customPool) { } public PooledQueue(ClearMode clearMode, ArrayPool<T> customPool) { _pool = customPool ?? ArrayPool<T>.Shared; _array = Array.Empty<T>(); _clearOnFree = ShouldClear(clearMode); } public PooledQueue(int capacity) : this(capacity, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledQueue(int capacity, ClearMode clearMode) : this(capacity, clearMode, ArrayPool<T>.Shared) { } public PooledQueue(int capacity, ArrayPool<T> customPool) : this(capacity, ClearMode.Auto, customPool) { } public PooledQueue(int capacity, ClearMode clearMode, ArrayPool<T> customPool) { if (capacity < 0) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum); } _pool = customPool ?? ArrayPool<T>.Shared; _array = _pool.Rent(capacity); _clearOnFree = ShouldClear(clearMode); } public PooledQueue(IEnumerable<T> enumerable) : this(enumerable, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledQueue(IEnumerable<T> enumerable, ClearMode clearMode) : this(enumerable, clearMode, ArrayPool<T>.Shared) { } public PooledQueue(IEnumerable<T> enumerable, ArrayPool<T> customPool) : this(enumerable, ClearMode.Auto, customPool) { } public PooledQueue(IEnumerable<T> enumerable, ClearMode clearMode, ArrayPool<T> customPool) { _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); if (enumerable != null) { if (!(enumerable is ICollection<T> collection)) { using (PooledList<T> pooledList = new PooledList<T>(enumerable)) { _array = _pool.Rent(pooledList.Count); pooledList.Span.CopyTo(_array); _size = pooledList.Count; if (_size != _array.Length) { _tail = _size; } return; } } ICollection<T> collection2 = collection; if (collection2.Count == 0) { _array = Array.Empty<T>(); return; } _array = _pool.Rent(collection2.Count); collection2.CopyTo(_array, 0); _size = collection2.Count; if (_size != _array.Length) { _tail = _size; } } else { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.enumerable); } } public PooledQueue(T[] array) : this((ReadOnlySpan<T>)array.AsSpan(), ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledQueue(T[] array, ClearMode clearMode) : this((ReadOnlySpan<T>)array.AsSpan(), clearMode, ArrayPool<T>.Shared) { } public PooledQueue(T[] array, ArrayPool<T> customPool) : this((ReadOnlySpan<T>)array.AsSpan(), ClearMode.Auto, customPool) { } public PooledQueue(T[] array, ClearMode clearMode, ArrayPool<T> customPool) : this((ReadOnlySpan<T>)array.AsSpan(), clearMode, customPool) { } public PooledQueue(ReadOnlySpan<T> span) : this(span, ClearMode.Auto, ArrayPool<T>.Shared) { } public PooledQueue(ReadOnlySpan<T> span, ClearMode clearMode) : this(span, clearMode, ArrayPool<T>.Shared) { } public PooledQueue(ReadOnlySpan<T> span, ArrayPool<T> customPool) : this(span, ClearMode.Auto, customPool) { } public PooledQueue(ReadOnlySpan<T> span, ClearMode clearMode, ArrayPool<T> customPool) { _pool = customPool ?? ArrayPool<T>.Shared; _clearOnFree = ShouldClear(clearMode); _array = _pool.Rent(span.Length); span.CopyTo(_array); _size = span.Length; if (_size != _array.Length) { _tail = _size; } } public void Clear() { if (_size != 0) { if (_clearOnFree) { if (_head < _tail) { Array.Clear(_array, _head, _size); } else { Array.Clear(_array, _head, _array.Length - _head); Array.Clear(_array, 0, _tail); } } _size = 0; } _head = 0; _tail = 0; _version++; } public void CopyTo(T[] array, int arrayIndex) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if ((uint)arrayIndex > (uint)array.Length) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.arrayIndex, ExceptionResource.ArgumentOutOfRange_Index); } if (array.Length - arrayIndex < _size) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } int size = _size; if (size != 0) { int num = Math.Min(_array.Length - _head, size); Array.Copy(_array, _head, array, arrayIndex, num); size -= num; if (size > 0) { Array.Copy(_array, 0, array, arrayIndex + _array.Length - _head, size); } } } void ICollection.CopyTo(Array array, int index) { if (array == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.array); } if (array.Rank != 1) { ThrowHelper.ThrowArgumentException(ExceptionResource.Rank_MultiDimNotSupported, ExceptionArgument.array); } if (array.GetLowerBound(0) != 0) { ThrowHelper.ThrowArgumentException(ExceptionResource.Arg_NonZeroLowerBound, ExceptionArgument.array); } int length = array.Length; if ((uint)index > (uint)length) { ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_Index); } if (length - index < _size) { ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_InvalidOffLen); } int size = _size; if (size == 0) { return; } try { int num = ((_array.Length - _head < size) ? (_array.Length - _head) : size); Array.Copy(_array, _head, array, index, num); size -= num; if (size > 0) { Array.Copy(_array, 0, array, index + _array.Length - _head, size); } } catch (ArrayTypeMismatchException) { ThrowHelper.ThrowArgumentException_Argument_InvalidArrayType(); } } public void Enqueue(T item) { if (_size == _array.Length) { int num = (int)((long)_array.Length * 200L / 100); if (num < _array.Length + 4) { num = _array.Length + 4; } SetCapacity(num); } _array[_tail] = item; MoveNext(ref _tail); _size++; _version++; } public Enumerator GetEnumerator() { return new Enumerator(this); } IEnumerator<T> IEnumerable<T>.GetEnumerator() { return new Enumerator(this); } IEnumerator IEnumerable.GetEnumerator() { return new Enumerator(this); } public T Dequeue() { int head = _head; T[] array = _array; if (_size == 0) { ThrowForEmptyQueue(); } T result = array[head]; if (_clearOnFree) { array[head] = default(T); } MoveNext(ref _head); _size--; _version++; return result; } public bool TryDequeue(out T result) { int head = _head; T[] array = _array; if (_size == 0) { result = default(T); return false; } result = array[head]; if (_clearOnFree) { array[head] = default(T); } MoveNext(ref _head); _size--; _version++; return true; } public T Peek() { if (_size == 0) { ThrowForEmptyQueue(); } return _array[_head]; } public bool TryPeek(out T result) { if (_size == 0) { result = default(T); return false; } result = _array[_head]; return true; } public bool Contains(T item) { if (_size == 0) { return false; } if (_head < _tail) { return Array.IndexOf(_array, item, _head, _size) >= 0; } if (Array.IndexOf(_array, item, _head, _array.Length - _head) < 0) { return Array.IndexOf(_array, item, 0, _tail) >= 0; } return true; } public int RemoveWhere(Func<T, bool> match) { if (match == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.match); } if (_size == 0) { return 0; } T[] array = _pool.Rent(_size); int num = 0; if (_head < _tail) { int num2 = 0; for (int i = _head; i < _size; i++) { if (match(_array[i])) { num++; } else { array[num2++] = _array[i]; } } } else { int num3 = 0; for (int j = _head; j < _array.Length - _head; j++) { if (match(_array[j])) { num++; } else { array[num3++] = _array[j]; } } for (int k = 0; k < _tail; k++) { if (match(_array[k])) { num++; } else { array[num3++] = _array[k]; } } } ReturnArray(array); _size -= num; _head = (_tail = 0); if (_size != _array.Length) { _tail = _size; } _version++; return num; } public T[] ToArray() { if (_size == 0) { return Array.Empty<T>(); } T[] array = new T[_size]; if (_head < _tail) { Array.Copy(_array, _head, array, 0, _size); } else { Array.Copy(_array, _head, array, 0, _array.Length - _head); Array.Copy(_array, 0, array, _array.Length - _head, _tail); } return array; } private void SetCapacity(int capacity) { T[] array = _pool.Rent(capacity); if (_size > 0) { if (_head < _tail) { Array.Copy(_array, _head, array, 0, _size); } else { Array.Copy(_array, _head, array, 0, _array.Length - _head); Array.Copy(_array, 0, array, _array.Length - _head, _tail); } } ReturnArray(array); _head = 0; _tail = ((_size != array.Length) ? _size : 0); _version++; } private void MoveNext(ref int index) { int num = index + 1; if (num == _array.Length) { num = 0; } index = num; } private void ThrowForEmptyQueue() { throw new InvalidOperationException("Queue is empty."); } public void TrimExcess() { int num = (int)((double)_array.Length * 0.9); if (_size < num) { SetCapacity(_size); } } private void ReturnArray(T[] replaceWith) { if (_array.Length != 0) { try { _pool.Return(_array, _clearOnFree); } catch (ArgumentException) { } } _array = replaceWith; } private static bool ShouldClear(C
IcedTasks/IcedTasks.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; using <StartupCode$IcedTasks>; using IcedTasks; using IcedTasks.Polyfill.Task; using Microsoft.FSharp.Collections; using Microsoft.FSharp.Control; using Microsoft.FSharp.Control.TaskBuilderExtensions; using Microsoft.FSharp.Core; using Microsoft.FSharp.Core.CompilerServices; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyTitle("IcedTasks")] [assembly: AssemblyProduct("IcedTasks")] [assembly: AssemblyMetadata("ReleaseDate", "2024-07-10T00:00:00.0000000")] [assembly: AssemblyFileVersion("0.11.7")] [assembly: AssemblyInformationalVersion("0.11.7")] [assembly: AssemblyMetadata("ReleaseChannel", "release")] [assembly: AssemblyMetadata("GitHash", "db0b55bd89f769e17744319bfc510486a5b1fc5f")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.11.7.0")] namespace IcedTasks { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Awaiter { public static bool IsCompleted<Awaiter, TResult>(Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } public static bool IsCompleted$W<Awaiter, TResult>(FSharpFunc<Awaiter, TResult> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { return get_IsCompleted.Invoke(awaiter); } public static TResult GetResult<Awaiter, TResult>(Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } public static TResult GetResult$W<Awaiter, TResult>(FSharpFunc<Awaiter, TResult> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { return getResult.Invoke(awaiter); } public static void OnCompleted<Awaiter, TResult, Continuation>(Awaiter awaiter, Action continuation) where Awaiter : ICriticalNotifyCompletion { Awaiter val = awaiter; val.OnCompleted(continuation); } public static void OnCompleted$W<Awaiter, TResult, Continuation>(FSharpFunc<Awaiter, TResult> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaiter awaiter, Action continuation) where Awaiter : ICriticalNotifyCompletion { Awaiter val = awaiter; val.OnCompleted(continuation); } public static void UnsafeOnCompleted<Awaiter, TResult, Continuation>(Awaiter awaiter, Action continuation) where Awaiter : ICriticalNotifyCompletion { Awaiter val = awaiter; val.UnsafeOnCompleted(continuation); } public static void UnsafeOnCompleted$W<Awaiter, TResult, Continuation>(FSharpFunc<Awaiter, TResult> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaiter awaiter, Action continuation) where Awaiter : ICriticalNotifyCompletion { Awaiter val = awaiter; val.UnsafeOnCompleted(continuation); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Awaitable { public static Awaiter GetAwaiter<Awaitable, Awaiter, TResult>(Awaitable awaitable) where Awaiter : ICriticalNotifyCompletion { throw new NotSupportedException("Dynamic invocation of GetAwaiter is not supported"); } public static Awaiter GetAwaiter$W<Awaitable, Awaiter, TResult>(FSharpFunc<Awaitable, Awaiter> getAwaiter, FSharpFunc<Awaiter, TResult> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaitable awaitable) where Awaiter : ICriticalNotifyCompletion { return getAwaiter.Invoke(awaitable); } public static TaskAwaiter<T> GetTaskAwaiter<T>(Task<T> t) { return t.GetAwaiter(); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class MethodBuilder { public static void SetResult<Builder, TResult>(ref Builder builder) { throw new NotSupportedException("Dynamic invocation of SetResult is not supported"); } public static void SetResult$W<Builder, TResult>(FSharpFunc<Builder, Unit> setResult, ref Builder builder) { setResult.Invoke(builder); } public static void SetResult<Builder, TResult>(ref Builder builder, TResult result) { throw new NotSupportedException("Dynamic invocation of SetResult is not supported"); } public static void SetResult$W<Builder, TResult>(FSharpFunc<Builder, FSharpFunc<TResult, Unit>> setResult, ref Builder builder, TResult result) { FSharpFunc<Unit, ?>.InvokeFast<Unit>((FSharpFunc<Unit, FSharpFunc<?, Unit>>)(object)setResult, (Unit)builder, result); } public static void SetException<Builder>(ref Builder builder, Exception ex) { throw new NotSupportedException("Dynamic invocation of SetException is not supported"); } public static void SetException$W<Builder>(FSharpFunc<Builder, FSharpFunc<Exception, Unit>> setException, ref Builder builder, Exception ex) { FSharpFunc<Unit, Exception>.InvokeFast<Unit>((FSharpFunc<Unit, FSharpFunc<Exception, Unit>>)(object)setException, (Unit)builder, ex); } public static void SetStateMachine<Builder, TStateMachine>(ref Builder builder, TStateMachine stateMachine) { throw new NotSupportedException("Dynamic invocation of SetStateMachine is not supported"); } public static void SetStateMachine$W<Builder, TStateMachine>(FSharpFunc<Builder, FSharpFunc<TStateMachine, Unit>> setStateMachine, ref Builder builder, TStateMachine stateMachine) { FSharpFunc<Unit, ?>.InvokeFast<Unit>((FSharpFunc<Unit, FSharpFunc<?, Unit>>)(object)setStateMachine, (Unit)builder, stateMachine); } public static void Start<Builder, TStateMachine>(ref Builder builder, ref TStateMachine stateMachine) { throw new NotSupportedException("Dynamic invocation of Start is not supported"); } public static void Start$W<Builder, TStateMachine>(FSharpFunc<Builder, FSharpFunc<ref TStateMachine, Unit>> start, ref Builder builder, ref TStateMachine stateMachine) { FSharpFunc<Unit, ref ?>.InvokeFast<Unit>((FSharpFunc<Unit, FSharpFunc<ref ?, Unit>>)(object)start, (Unit)builder, ref Unsafe.As<TStateMachine, ?>(ref stateMachine)); } public static TResult get_Task<Builder, TResult>(ref Builder builder) { throw new NotSupportedException("Dynamic invocation of get_Task is not supported"); } public static TResult get_Task$W<Builder, TResult>(FSharpFunc<Builder, TResult> get_Task, ref Builder builder) { return get_Task.Invoke(builder); } public static void AwaitUnsafeOnCompleted<Builder, TAwaiter, TStateMachine>(ref Builder builder, ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine { throw new NotSupportedException("Dynamic invocation of AwaitUnsafeOnCompleted is not supported"); } public unsafe static void AwaitUnsafeOnCompleted$W<Builder, TAwaiter, TStateMachine>(FSharpFunc<Builder, FSharpFunc<ref TAwaiter, FSharpFunc<ref TStateMachine, Unit>>> awaitUnsafeOnCompleted, ref Builder builder, ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : ICriticalNotifyCompletion where TStateMachine : IAsyncStateMachine { FSharpFunc<ref TStateMachine, ref Unit>.InvokeFast<ref TStateMachine, Unit>((FSharpFunc<ref TStateMachine, FSharpFunc<ref Unit, FSharpFunc<ref TStateMachine, Unit>>>)(object)awaitUnsafeOnCompleted, ref *(TStateMachine*)builder, ref Unsafe.As<TAwaiter, Unit>(ref awaiter), ref stateMachine); } public static void AwaitOnCompleted<Builder, TAwaiter, TStateMachine>(ref Builder builder, ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine { throw new NotSupportedException("Dynamic invocation of AwaitOnCompleted is not supported"); } public unsafe static void AwaitOnCompleted$W<Builder, TAwaiter, TStateMachine>(FSharpFunc<Builder, FSharpFunc<ref TAwaiter, FSharpFunc<ref TStateMachine, Unit>>> awaitOnCompleted, ref Builder builder, ref TAwaiter awaiter, ref TStateMachine stateMachine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine { FSharpFunc<ref TStateMachine, ref Unit>.InvokeFast<ref TStateMachine, Unit>((FSharpFunc<ref TStateMachine, FSharpFunc<ref Unit, FSharpFunc<ref TStateMachine, Unit>>>)(object)awaitOnCompleted, ref *(TStateMachine*)builder, ref Unsafe.As<TAwaiter, Unit>(ref awaiter), ref stateMachine); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal class Async { [CompilationArgumentCounts(new int[] { 1, 1 })] internal static FSharpAsync<b> map<a, b>(FSharpFunc<a, b> f, FSharpAsync<a> x) { FSharpFunc<a, FSharpAsync<b>> binder = new $AsyncEx.map@11-1<a, b>(f); return AsyncPrimitives.MakeAsync<b>((FSharpFunc<AsyncActivation<b>, AsyncReturn>)new $AsyncEx.map@11-3<a, b>(x, binder)); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class AsyncEx { public static FSharpAsync<a> AwaitAwaiter<Awaiter, a>(Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { return FSharpAsync.FromContinuations<a>((FSharpFunc<Tuple<FSharpFunc<a, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitAwaiter@42<Awaiter, a>(awaiter)); } public static FSharpAsync<a> AwaitAwaiter$W<Awaiter, a>(FSharpFunc<Awaiter, a> getResult, FSharpFunc<Awaiter, bool> get_IsCompleted, Awaiter awaiter) where Awaiter : ICriticalNotifyCompletion { return FSharpAsync.FromContinuations<a>((FSharpFunc<Tuple<FSharpFunc<a, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitAwaiter@42-2<Awaiter, a>(getResult, get_IsCompleted, awaiter)); } public static FSharpAsync<b> AwaitAwaitable<Awaitable, a, b>(Awaitable awaitable) where a : ICriticalNotifyCompletion { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetAwaiter is not supported"); } a awaiter = (a)(object)null; return FSharpAsync.FromContinuations<b>((FSharpFunc<Tuple<FSharpFunc<b, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitAwaitable@62<a, b>(awaiter)); } public static FSharpAsync<b> AwaitAwaitable$W<Awaitable, a, b>(FSharpFunc<Awaitable, a> getAwaiter, FSharpFunc<a, b> getResult, FSharpFunc<a, bool> get_IsCompleted, Awaitable awaitable) where a : ICriticalNotifyCompletion { a awaiter = getAwaiter.Invoke(awaitable); return FSharpAsync.FromContinuations<b>((FSharpFunc<Tuple<FSharpFunc<b, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitAwaitable@62-2<a, b>(getResult, get_IsCompleted, awaiter)); } public static FSharpAsync<Unit> AwaitTask(Task task) { TaskAwaiter awaiter = task.GetAwaiter(); return FSharpAsync.FromContinuations<Unit>((FSharpFunc<Tuple<FSharpFunc<Unit, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitTask@73(awaiter)); } public static FSharpAsync<T> AwaitTask<T>(Task<T> task) { TaskAwaiter<T> awaiter = task.GetAwaiter(); return FSharpAsync.FromContinuations<T>((FSharpFunc<Tuple<FSharpFunc<T, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>)new $AsyncEx.AwaitTask@85-2<T>(awaiter)); } public static FSharpAsync<a> AwaitValueTask<a>(ValueTask<a> vTask) { if (vTask.IsCompletedSuccessfully) { a result = vTask.Result; return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $AsyncEx.AwaitValueTask@100<a>(result)); } return AwaitTask(vTask.AsTask()); } public static FSharpAsync<Unit> AwaitValueTask(ValueTask vTask) { if (vTask.IsCompletedSuccessfully) { return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)$AsyncEx.AwaitValueTask@117-1.@_instance); } return AwaitTask(vTask.AsTask()); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class AsyncExBuilder { public FSharpAsync<Unit> Zero() { return ExtraTopLevelOperators.DefaultAsyncBuilder.Zero(); } public FSharpAsync<j> Delay<j>([InlineIfLambda] FSharpFunc<Unit, FSharpAsync<j>> generator) { return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<j>(generator); } public FSharpAsync<i> Return<i>(i value) { return AsyncPrimitives.MakeAsync<i>((FSharpFunc<AsyncActivation<i>, AsyncReturn>)new $AsyncEx.Return@196-1<i>(value)); } public FSharpAsync<c> ReturnFrom<c>(FSharpAsync<c> computation) { return computation; } public FSharpAsync<f0> Bind<f, f0>(FSharpAsync<f> computation, [InlineIfLambda] FSharpFunc<f, FSharpAsync<f0>> binder) { return AsyncPrimitives.MakeAsync<f0>((FSharpFunc<AsyncActivation<f0>, AsyncReturn>)new $AsyncEx.Bind@201-4<f, f0>(computation, binder)); } public FSharpAsync<ok> TryFinallyAsync<ok>(FSharpAsync<ok> computation, [InlineIfLambda] FSharpFunc<Unit, ValueTask> compensation) { FSharpAsync<Unit> compensation2 = ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new $AsyncEx.compensation@209(compensation)); object @_instance; @_instance = $AsyncEx.finish@142-2.@_instance; object startDeferred@156- = new $AsyncEx.startDeferred@156-5(compensation2, @_instance); FSharpFunc<CancellationToken, FSharpFunc<Tuple<FSharpFunc<ok, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>> startComp = (FSharpFunc<CancellationToken, FSharpFunc<Tuple<FSharpFunc<ok, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>>)(object)new $AsyncEx.TryFinallyAsync@211-12<ok>(computation, startDeferred@156-); return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<ok>((FSharpFunc<Unit, FSharpAsync<ok>>)new $AsyncEx.TryFinallyAsync@211-16<ok>(startComp)); } public FSharpAsync<ok> Using<b, ok>(b resource, [InlineIfLambda] FSharpFunc<b, FSharpAsync<ok>> binder) where b : IAsyncDisposable { FSharpAsync<ok> computation = binder.Invoke(resource); FSharpAsync<Unit> compensation = ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new $AsyncEx.Using@218-14<b>(resource)); object @_instance; @_instance = $AsyncEx.finish@142-4.@_instance; object startDeferred@156- = new $AsyncEx.startDeferred@156-10(compensation, @_instance); FSharpFunc<CancellationToken, FSharpFunc<Tuple<FSharpFunc<ok, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>> startComp = (FSharpFunc<CancellationToken, FSharpFunc<Tuple<FSharpFunc<ok, Unit>, FSharpFunc<Exception, Unit>, FSharpFunc<OperationCanceledException, Unit>>, Unit>>)(object)new $AsyncEx.Using@218-16<ok>(computation, startDeferred@156-); return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<ok>((FSharpFunc<Unit, FSharpAsync<ok>>)new $AsyncEx.Using@218-20<ok>(startComp)); } internal FSharpAsync<Unit> WhileAsync(FSharpAsync<bool> guard, FSharpAsync<Unit> computation) { return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>((FSharpFunc<Unit, FSharpAsync<Unit>>)new $AsyncEx.WhileAsync@231-14(guard, computation)); } public FSharpAsync<Unit> For<e>(IAsyncEnumerable<e> sequence, [InlineIfLambda] FSharpFunc<e, FSharpAsync<Unit>> body) { FSharpAsync<CancellationToken> cancellationToken = FSharpAsync.CancellationToken; return AsyncPrimitives.MakeAsync<Unit>((FSharpFunc<AsyncActivation<Unit>, AsyncReturn>)new $AsyncEx.For@243-40<e>(sequence, body, cancellationToken)); } public FSharpAsync<Unit> While([InlineIfLambda] FSharpFunc<Unit, bool> guard, FSharpAsync<Unit> computation) { return ExtraTopLevelOperators.DefaultAsyncBuilder.While(guard, computation); } public FSharpAsync<Unit> For<e>(IEnumerable<e> sequence, [InlineIfLambda] FSharpFunc<e, FSharpAsync<Unit>> body) { return ExtraTopLevelOperators.DefaultAsyncBuilder.For<e>(sequence, body); } public FSharpAsync<a> Combine<a>(FSharpAsync<Unit> computation1, FSharpAsync<a> computation2) { FSharpFunc<Unit, FSharpAsync<a>> part = new $AsyncEx.Combine@269-1<a>(computation2); return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $AsyncEx.Combine@269-2<a>(computation1, part)); } public FSharpAsync<a> TryFinally<a>(FSharpAsync<a> computation, [InlineIfLambda] FSharpFunc<Unit, Unit> compensation) { return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $AsyncEx.TryFinally@276-3<a>(computation, compensation)); } public FSharpAsync<a> TryWith<a>(FSharpAsync<a> computation, [InlineIfLambda] FSharpFunc<Exception, FSharpAsync<a>> catchHandler) { return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $AsyncEx.TryWith@283-1<a>(computation, catchHandler)); } public FSharpAsync<a> Source<a>(FSharpAsync<a> async) { return async; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class ParallelAsync { [CompilationArgumentCounts(new int[] { 1, 1 })] public static FSharpAsync<Tuple<left, right>> zipWithStartChild<left, right>(FSharpAsync<left> a1, FSharpAsync<right> a2) { FSharpAsync<FSharpAsync<left>> computation = FSharpAsync.StartChild<left>(a1, (FSharpOption<int>)null); FSharpFunc<FSharpAsync<left>, FSharpAsync<Tuple<left, right>>> binder = new $ParallelAsync.zipWithStartChild@26<left, right>(a2); return AsyncPrimitives.MakeAsync<Tuple<left, right>>((FSharpFunc<AsyncActivation<Tuple<left, right>>, AsyncReturn>)new $ParallelAsync.zipWithStartChild@24-8<left, right>(computation, binder)); } [CompilationArgumentCounts(new int[] { 1, 1 })] public static FSharpAsync<Tuple<left, right>> zipUsingStartImmediateAsTask<left, right>(FSharpAsync<left> a1, FSharpAsync<right> a2) { FSharpAsync<CancellationToken> cancellationToken = FSharpAsync.CancellationToken; FSharpFunc<CancellationToken, FSharpAsync<Tuple<left, right>>> binder = new $ParallelAsync.zipUsingStartImmediateAsTask@56<left, right>(a1, a2); return AsyncPrimitives.MakeAsync<Tuple<left, right>>((FSharpFunc<AsyncActivation<Tuple<left, right>>, AsyncReturn>)new $ParallelAsync.zipUsingStartImmediateAsTask@54-6<left, right>(cancellationToken, binder)); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class ParallelAsyncBuilderBase { public FSharpAsync<Unit> Zero() { return ExtraTopLevelOperators.DefaultAsyncBuilder.Zero(); } public FSharpAsync<l> Delay<l>(FSharpFunc<Unit, FSharpAsync<l>> generator) { return ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<l>(generator); } public FSharpAsync<k> Return<k>(k value) { return AsyncPrimitives.MakeAsync<k>((FSharpFunc<AsyncActivation<k>, AsyncReturn>)new $ParallelAsync.Return@73-2<k>(value)); } public FSharpAsync<j> ReturnFrom<j>(FSharpAsync<j> computation) { return computation; } public FSharpAsync<i> Bind<h, i>(FSharpAsync<h> computation, FSharpFunc<h, FSharpAsync<i>> binder) { return AsyncPrimitives.MakeAsync<i>((FSharpFunc<AsyncActivation<i>, AsyncReturn>)new $ParallelAsync.Bind@77-5<h, i>(computation, binder)); } public FSharpAsync<g> Using<f, g>(f resource, FSharpFunc<f, FSharpAsync<g>> binder) where f : IDisposable { return ExtraTopLevelOperators.DefaultAsyncBuilder.Using<f, g>(resource, binder); } public FSharpAsync<Unit> While(FSharpFunc<Unit, bool> guard, FSharpAsync<Unit> computation) { return ExtraTopLevelOperators.DefaultAsyncBuilder.While(guard, computation); } public FSharpAsync<Unit> For<e>(IEnumerable<e> sequence, FSharpFunc<e, FSharpAsync<Unit>> body) { return ExtraTopLevelOperators.DefaultAsyncBuilder.For<e>(sequence, body); } public FSharpAsync<d> Combine<d>(FSharpAsync<Unit> computation1, FSharpAsync<d> computation2) { FSharpFunc<Unit, FSharpAsync<d>> part = new $ParallelAsync.Combine@86-3<d>(computation2); return AsyncPrimitives.MakeAsync<d>((FSharpFunc<AsyncActivation<d>, AsyncReturn>)new $ParallelAsync.Combine@86-4<d>(computation1, part)); } public FSharpAsync<c> TryFinally<c>(FSharpAsync<c> computation, FSharpFunc<Unit, Unit> compensation) { return AsyncPrimitives.MakeAsync<c>((FSharpFunc<AsyncActivation<c>, AsyncReturn>)new $ParallelAsync.TryFinally@89-4<c>(computation, compensation)); } public FSharpAsync<b> TryWith<b>(FSharpAsync<b> computation, FSharpFunc<Exception, FSharpAsync<b>> catchHandler) { return AsyncPrimitives.MakeAsync<b>((FSharpFunc<AsyncActivation<b>, AsyncReturn>)new $ParallelAsync.TryWith@92-3<b>(computation, catchHandler)); } public FSharpAsync<a> BindReturn<T, a>(FSharpAsync<T> x, FSharpFunc<T, a> f) { FSharpFunc<T, FSharpAsync<a>> binder = new $ParallelAsync.BindReturn@94-8<T, a>(f); return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $ParallelAsync.BindReturn@94-10<T, a>(x, binder)); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class ParallelAsyncBuilderUsingStartChild : ParallelAsyncBuilderBase { public FSharpAsync<Tuple<T, T1>> MergeSources<T, T1>(FSharpAsync<T> t1, FSharpAsync<T1> t2) { return ParallelAsync.zipWithStartChild<T, T1>(t1, t2); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class ParallelAsyncBuilderUsingStartImmediateAsTask : ParallelAsyncBuilderBase { public FSharpAsync<Tuple<T, T1>> MergeSources<T, T1>(FSharpAsync<T> t1, FSharpAsync<T1> t2) { FSharpAsync<CancellationToken> cancellationToken = FSharpAsync.CancellationToken; FSharpFunc<CancellationToken, FSharpAsync<Tuple<T, T1>>> binder = new $ParallelAsync.MergeSources@114-16<T, T1>(t1, t2); return AsyncPrimitives.MakeAsync<Tuple<T, T1>>((FSharpFunc<AsyncActivation<Tuple<T, T1>>, AsyncReturn>)new $ParallelAsync.MergeSources@114-22<T, T1>(cancellationToken, binder)); } } [AutoOpen] [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class CancellableTasks { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class CancellableTaskBuilder : CancellableTaskBase.CancellableTaskBuilderBase { public static FSharpFunc<CancellationToken, Task<T>> RunDynamic<T>(ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm = new FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(default(ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>)); ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc = new initialResumptionFunc@55-6<T>(code).Invoke; ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo = new resumptionInfo@58-6<T>(initialResumptionFunc); return new RunDynamic@92-19<T>(sm, resumptionInfo); } public FSharpFunc<CancellationToken, Task<T>> Run<T>(ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm = new FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(default(ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>)); ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc = new Run@142-31<T>(code).Invoke; ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo = new Run@142-32<T>(initialResumptionFunc); return new Run@142-33<T>(sm, resumptionInfo); } public FSharpFunc<CancellationToken, TaskAwaiter<i>> Source<i>([InlineIfLambda] FSharpFunc<CancellationToken, Task<i>> x) { return new Source@148-1<i>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(g, h)>> MergeSources<Awaiter1, g, Awaiter2, h>([InlineIfLambda] FSharpFunc<CancellationToken, Awaiter1> left, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter2> right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@157-47<Awaiter1, g, Awaiter2, h> mergeSources@157- = default(MergeSources@157-47<Awaiter1, g, Awaiter2, h>); mergeSources@157-.left = left; mergeSources@157-.right = right; mergeSources@157- = mergeSources@157-; FSharpFunc<CancellationToken, Task<(g, h)>> x = new MergeSources@157-48<Awaiter1, g, Awaiter2, h>(mergeSources@157-); return new MergeSources@156-49<g, h>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(g, h)>> MergeSources$W<Awaiter1, g, Awaiter2, h>(FSharpFunc<Awaiter1, g> getResult, FSharpFunc<Awaiter2, h> getResult1, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted3, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter1> left, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter2> right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@157-50<Awaiter1, g, Awaiter2, h> mergeSources@157- = default(MergeSources@157-50<Awaiter1, g, Awaiter2, h>); mergeSources@157-.getResult = (FSharpFunc<Awaiter1, g>)(object)left; mergeSources@157-.getResult0 = (FSharpFunc<Awaiter2, h>)(object)right; mergeSources@157- = mergeSources@157-; FSharpFunc<CancellationToken, Task<(g, h)>> x = new MergeSources@157-51<Awaiter1, g, Awaiter2, h>(getResult, getResult1, get_IsCompleted, get_IsCompleted3, mergeSources@157-); return new MergeSources@156-52<g, h>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(e, f)>> MergeSources<Awaiter1, e, Awaiter2, f>(Awaiter1 left, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter2> right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@180-53<Awaiter1, e, Awaiter2, f> mergeSources@180- = default(MergeSources@180-53<Awaiter1, e, Awaiter2, f>); mergeSources@180-.left = left; mergeSources@180-.right = right; mergeSources@180- = mergeSources@180-; FSharpFunc<CancellationToken, Task<(e, f)>> x = new MergeSources@180-54<Awaiter1, e, Awaiter2, f>(mergeSources@180-); return new MergeSources@179-55<e, f>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(e, f)>> MergeSources$W<Awaiter1, e, Awaiter2, f>(FSharpFunc<Awaiter1, e> getResult, FSharpFunc<Awaiter2, f> getResult1, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted3, Awaiter1 left, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter2> right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@180-56<Awaiter1, e, Awaiter2, f> mergeSources@180- = default(MergeSources@180-56<Awaiter1, e, Awaiter2, f>); mergeSources@180-.getResult = (FSharpFunc<Awaiter1, e>)left; mergeSources@180-.getResult0 = (FSharpFunc<Awaiter2, f>)(object)right; mergeSources@180- = mergeSources@180-; FSharpFunc<CancellationToken, Task<(e, f)>> x = new MergeSources@180-57<Awaiter1, e, Awaiter2, f>(getResult, getResult1, get_IsCompleted, get_IsCompleted3, mergeSources@180-); return new MergeSources@179-58<e, f>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(c, d)>> MergeSources<Awaiter1, c, Awaiter2, d>([InlineIfLambda] FSharpFunc<CancellationToken, Awaiter1> left, Awaiter2 right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@203-59<Awaiter1, c, Awaiter2, d> mergeSources@203- = default(MergeSources@203-59<Awaiter1, c, Awaiter2, d>); mergeSources@203-.left = left; mergeSources@203-.right = right; mergeSources@203- = mergeSources@203-; FSharpFunc<CancellationToken, Task<(c, d)>> x = new MergeSources@203-60<Awaiter1, c, Awaiter2, d>(mergeSources@203-); return new MergeSources@202-61<c, d>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(c, d)>> MergeSources$W<Awaiter1, c, Awaiter2, d>(FSharpFunc<Awaiter1, c> getResult, FSharpFunc<Awaiter2, d> getResult1, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted3, [InlineIfLambda] FSharpFunc<CancellationToken, Awaiter1> left, Awaiter2 right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@203-62<Awaiter1, c, Awaiter2, d> mergeSources@203- = default(MergeSources@203-62<Awaiter1, c, Awaiter2, d>); mergeSources@203-.getResult = (FSharpFunc<Awaiter1, c>)(object)left; mergeSources@203-.getResult0 = (FSharpFunc<Awaiter2, d>)right; mergeSources@203- = mergeSources@203-; FSharpFunc<CancellationToken, Task<(c, d)>> x = new MergeSources@203-63<Awaiter1, c, Awaiter2, d>(getResult, getResult1, get_IsCompleted, get_IsCompleted3, mergeSources@203-); return new MergeSources@202-64<c, d>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(a, b)>> MergeSources<Awaiter1, a, Awaiter2, b>(Awaiter1 left, Awaiter2 right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@221-65<Awaiter1, a, Awaiter2, b> mergeSources@221- = default(MergeSources@221-65<Awaiter1, a, Awaiter2, b>); mergeSources@221-.left = left; mergeSources@221-.right = right; mergeSources@221- = mergeSources@221-; FSharpFunc<CancellationToken, Task<(a, b)>> x = new MergeSources@221-66<Awaiter1, a, Awaiter2, b>(mergeSources@221-); return new MergeSources@220-67<a, b>(x); } [NoEagerConstraintApplication] public FSharpFunc<CancellationToken, TaskAwaiter<(a, b)>> MergeSources$W<Awaiter1, a, Awaiter2, b>(FSharpFunc<Awaiter1, a> getResult, FSharpFunc<Awaiter2, b> getResult1, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted3, Awaiter1 left, Awaiter2 right) where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { MergeSources@221-68<Awaiter1, a, Awaiter2, b> mergeSources@221- = default(MergeSources@221-68<Awaiter1, a, Awaiter2, b>); mergeSources@221-.getResult = (FSharpFunc<Awaiter1, a>)left; mergeSources@221-.getResult0 = (FSharpFunc<Awaiter2, b>)right; mergeSources@221- = mergeSources@221-; FSharpFunc<CancellationToken, Task<(a, b)>> x = new MergeSources@221-69<Awaiter1, a, Awaiter2, b>(getResult, getResult1, get_IsCompleted, get_IsCompleted3, mergeSources@221-); return new MergeSources@220-70<a, b>(x); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class initialResumptionFunc@55-6<T> { public ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code; public initialResumptionFunc@55-6(ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code) { this.code = code; base..ctor(); } internal bool Invoke(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm) { return ((ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>, CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>)(object)code).Invoke(ref Unsafe.As<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>>(ref sm)); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class resumptionInfo@58-6<T> : ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> { public ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc; public resumptionInfo@58-6(ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc) { this.initialResumptionFunc = initialResumptionFunc; ((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this)..ctor((ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this.initialResumptionFunc); } public override void MoveNext(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm) { Exception ex = null; Exception ex2; try { ((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)sm.ResumptionDynamicInfo).ResumptionData = null; if (((ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this).ResumptionFunc).Invoke(ref Unsafe.As<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>>(ref sm))) { sm.Data.MethodBuilder.SetResult(sm.Data.Result); } else { ICriticalNotifyCompletion awaiter = (ICriticalNotifyCompletion)((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)sm.ResumptionDynamicInfo).ResumptionData; sm.Data.MethodBuilder.AwaitUnsafeOnCompleted<ICriticalNotifyCompletion, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(ref awaiter, ref sm); } } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { sm.Data.MethodBuilder.SetException(ex2); } } public override void SetStateMachine(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm, IAsyncStateMachine state) { sm.Data.MethodBuilder.SetStateMachine(state); } } [Serializable] internal sealed class RunDynamic@92-19<T> : FSharpFunc<CancellationToken, Task<T>> { public FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm; public ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo; [CompilerGenerated] [DebuggerNonUserCode] internal RunDynamic@92-19(FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm, ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo) { ((FSharpFunc<CancellationToken, Task<CancellationToken>>)(object)this)..ctor(); this.sm = sm; this.resumptionInfo = resumptionInfo; } public override Task<T> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<T>(ct); } sm.contents@.Data.CancellationToken = ct; sm.contents@.ResumptionDynamicInfo = resumptionInfo; sm.contents@.Data.MethodBuilder = AsyncTaskMethodBuilder<T>.Create(); sm.contents@.Data.MethodBuilder.Start<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(ref sm.contents@); return sm.contents@.Data.MethodBuilder.Task; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class Run@142-31<T> { public ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code; public Run@142-31(ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, T> code) { this.code = code; base..ctor(); } internal bool Invoke(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm) { return ((ResumableCode<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>, CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>)(object)code).Invoke(ref Unsafe.As<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>>(ref sm)); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class Run@142-32<T> : ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc; public Run@142-32(ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> initialResumptionFunc) { this.initialResumptionFunc = initialResumptionFunc; ((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this)..ctor((ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this.initialResumptionFunc); } public override void MoveNext(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm) { Exception ex = null; Exception ex2; try { ((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)sm.ResumptionDynamicInfo).ResumptionData = null; if (((ResumptionFunc<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)this).ResumptionFunc).Invoke(ref Unsafe.As<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>>(ref sm))) { sm.Data.MethodBuilder.SetResult(sm.Data.Result); } else { ICriticalNotifyCompletion awaiter = (ICriticalNotifyCompletion)((ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>, AsyncTaskMethodBuilder<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>>)(object)sm.ResumptionDynamicInfo).ResumptionData; sm.Data.MethodBuilder.AwaitUnsafeOnCompleted<ICriticalNotifyCompletion, ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(ref awaiter, ref sm); } } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { sm.Data.MethodBuilder.SetException(ex2); } } public override void SetStateMachine(ref ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> sm, IAsyncStateMachine state) { sm.Data.MethodBuilder.SetStateMachine(state); } } [Serializable] internal sealed class Run@142-33<T> : FSharpFunc<CancellationToken, Task<T>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo; [CompilerGenerated] [DebuggerNonUserCode] internal Run@142-33(FSharpRef<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>> sm, ResumptionDynamicInfo<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>> resumptionInfo) { ((FSharpFunc<CancellationToken, Task<CancellationToken>>)(object)this)..ctor(); this.sm = sm; this.resumptionInfo = resumptionInfo; } public override Task<T> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<T>(ct); } sm.contents@.Data.CancellationToken = ct; sm.contents@.ResumptionDynamicInfo = resumptionInfo; sm.contents@.Data.MethodBuilder = AsyncTaskMethodBuilder<T>.Create(); sm.contents@.Data.MethodBuilder.Start<ResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<T, AsyncTaskMethodBuilder<T>>>>(ref sm.contents@); return sm.contents@.Data.MethodBuilder.Task; } } [Serializable] internal sealed class Source@148-1<i> : FSharpFunc<CancellationToken, TaskAwaiter<i>> { public FSharpFunc<CancellationToken, Task<i>> x; [CompilerGenerated] [DebuggerNonUserCode] internal Source@148-1(FSharpFunc<CancellationToken, Task<i>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<CancellationToken>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<i> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<CancellationToken>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@157-47<Awaiter1, g, Awaiter2, h> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> Data; public int ResumptionPoint; public FSharpFunc<CancellationToken, Awaiter1> left; public FSharpFunc<CancellationToken, Awaiter2> right; public Awaiter2 right0; public g leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num2; int num3; bool flag2; int num4; bool flag3; int num5; bool flag4; int num6; ICriticalNotifyCompletion criticalNotifyCompletion; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num2 = 1; goto IL_0129; case 3: { num3 = 1; goto IL_01a3; } IL_0129: flag2 = (byte)num2 != 0; flag3 = flag2; goto IL_0133; IL_0133: if (flag3) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } g val = (g)(object)null; leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right0; flag2 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_01ad; } if (false) { goto case 3; } ResumptionPoint = 3; num3 = 0; goto IL_01a3; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; goto IL_026d; IL_00a2: flag3 = (byte)num != 0; flag = flag3; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; Awaiter1 val2 = ((FSharpFunc<CancellationToken, CancellationToken>)(object)left).Invoke(cancellationToken2); right0 = ((FSharpFunc<CancellationToken, ?>)(object)right).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = val2; flag3 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_0133; } if (false) { goto case 2; } ResumptionPoint = 2; num2 = 0; goto IL_0129; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num5 = 0; break; IL_01a3: flag4 = (byte)num3 != 0; flag2 = flag4; goto IL_01ad; IL_026d: if (num4 != 0) { awaiter0 = default(Awaiter1); if (true) { right0 = default(Awaiter2); num5 = 1; break; } } goto end_IL_0029; IL_01ad: if (flag2) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } h val3 = (h)(object)null; h item = val3; (g, h) result = (leftR, item); Data.Result = result; num6 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; } if (num6 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(g); num4 = 1; goto IL_026d; } } goto end_IL_0029; } if (num5 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@157-48<Awaiter1, g, Awaiter2, h> : FSharpFunc<CancellationToken, Task<(g, h)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@157-47<Awaiter1, g, Awaiter2, h> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@157-48(MergeSources@157-47<Awaiter1, g, Awaiter2, h> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(g, h)>, ?)>>)(object)this)..ctor(); this.sm = sm; } public override Task<(g, h)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(g, h)>(ct); } MergeSources@157-47<Awaiter1, g, Awaiter2, h> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(g, h)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@156-49<g, h> : FSharpFunc<CancellationToken, TaskAwaiter<(g, h)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(g, h)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@156-49(FSharpFunc<CancellationToken, Task<(g, h)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(g, h)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(g, h)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(g, h)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@157-50<Awaiter1, g, Awaiter2, h> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> Data; public int ResumptionPoint; public FSharpFunc<Awaiter1, g> getResult; public FSharpFunc<Awaiter2, h> getResult0; public FSharpFunc<Awaiter1, bool> get_IsCompleted; public FSharpFunc<Awaiter2, bool> get_IsCompleted0; public FSharpFunc<CancellationToken, Awaiter1> left; public FSharpFunc<CancellationToken, Awaiter2> right; public Awaiter2 right0; public g leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num5; int num2; int num3; int num4; bool flag2; ICriticalNotifyCompletion criticalNotifyCompletion; int num6; bool flag4; bool flag3; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num5 = 1; goto IL_0124; case 3: { num2 = 1; goto IL_0194; } IL_012e: if (flag2) { g val = getResult.Invoke(awaiter0); leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right0; flag3 = true; if (((FSharpFunc<?, bool>)(object)get_IsCompleted0).Invoke(awaiter)) { goto IL_019e; } if (false) { goto case 3; } ResumptionPoint = 3; num2 = 0; goto IL_0194; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; goto IL_0259; IL_019e: if (flag3) { h val2 = ((FSharpFunc<?, ?>)(object)getResult0).Invoke(awaiter); h item = val2; (g, h) result = (leftR, item); Data.Result = result; num4 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; } if (num4 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(g); num3 = 1; goto IL_0259; } } goto end_IL_0029; IL_00a2: flag2 = (byte)num != 0; flag = flag2; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; Awaiter1 val3 = ((FSharpFunc<CancellationToken, CancellationToken>)(object)left).Invoke(cancellationToken2); right0 = ((FSharpFunc<CancellationToken, ?>)(object)right).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = val3; flag2 = true; if (get_IsCompleted.Invoke(awaiter0)) { goto IL_012e; } if (false) { goto case 2; } ResumptionPoint = 2; num5 = 0; goto IL_0124; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; break; IL_0259: if (num3 != 0) { awaiter0 = default(Awaiter1); if (true) { right0 = default(Awaiter2); num6 = 1; break; } } goto end_IL_0029; IL_0194: flag4 = (byte)num2 != 0; flag3 = flag4; goto IL_019e; IL_0124: flag3 = (byte)num5 != 0; flag2 = flag3; goto IL_012e; } if (num6 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(g, h), AsyncTaskMethodBuilder<(g, h)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@157-51<Awaiter1, g, Awaiter2, h> : FSharpFunc<CancellationToken, Task<(g, h)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, g> getResult; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, h> getResult0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, bool> get_IsCompleted; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, bool> get_IsCompleted0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@157-50<Awaiter1, g, Awaiter2, h> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@157-51(FSharpFunc<Awaiter1, g> getResult, FSharpFunc<Awaiter2, h> getResult0, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted0, MergeSources@157-50<Awaiter1, g, Awaiter2, h> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(g, h)>, ?)>>)(object)this)..ctor(); this.getResult = getResult; this.getResult0 = getResult0; this.get_IsCompleted = get_IsCompleted; this.get_IsCompleted0 = get_IsCompleted0; this.sm = sm; } public override Task<(g, h)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(g, h)>(ct); } MergeSources@157-50<Awaiter1, g, Awaiter2, h> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(g, h)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@156-52<g, h> : FSharpFunc<CancellationToken, TaskAwaiter<(g, h)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(g, h)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@156-52(FSharpFunc<CancellationToken, Task<(g, h)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(g, h)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(g, h)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(g, h)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@180-53<Awaiter1, e, Awaiter2, f> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> Data; public int ResumptionPoint; public Awaiter1 left; public FSharpFunc<CancellationToken, Awaiter2> right; public Awaiter2 right0; public e leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num2; int num3; bool flag2; int num4; bool flag3; int num5; bool flag4; int num6; ICriticalNotifyCompletion criticalNotifyCompletion; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num2 = 1; goto IL_011e; case 3: { num3 = 1; goto IL_0198; } IL_011e: flag2 = (byte)num2 != 0; flag3 = flag2; goto IL_0128; IL_0128: if (flag3) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } e val = (e)(object)null; leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right0; flag2 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_01a2; } if (false) { goto case 3; } ResumptionPoint = 3; num3 = 0; goto IL_0198; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; goto IL_0262; IL_00a2: flag3 = (byte)num != 0; flag = flag3; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; right0 = ((FSharpFunc<CancellationToken, ?>)(object)right).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = left; flag3 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_0128; } if (false) { goto case 2; } ResumptionPoint = 2; num2 = 0; goto IL_011e; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num5 = 0; break; IL_0198: flag4 = (byte)num3 != 0; flag2 = flag4; goto IL_01a2; IL_0262: if (num4 != 0) { awaiter0 = default(Awaiter1); if (true) { right0 = default(Awaiter2); num5 = 1; break; } } goto end_IL_0029; IL_01a2: if (flag2) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } f val2 = (f)(object)null; f item = val2; (e, f) result = (leftR, item); Data.Result = result; num6 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; } if (num6 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(e); num4 = 1; goto IL_0262; } } goto end_IL_0029; } if (num5 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@180-54<Awaiter1, e, Awaiter2, f> : FSharpFunc<CancellationToken, Task<(e, f)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@180-53<Awaiter1, e, Awaiter2, f> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@180-54(MergeSources@180-53<Awaiter1, e, Awaiter2, f> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(e, f)>, ?)>>)(object)this)..ctor(); this.sm = sm; } public override Task<(e, f)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(e, f)>(ct); } MergeSources@180-53<Awaiter1, e, Awaiter2, f> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(e, f)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@179-55<e, f> : FSharpFunc<CancellationToken, TaskAwaiter<(e, f)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(e, f)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@179-55(FSharpFunc<CancellationToken, Task<(e, f)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(e, f)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(e, f)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(e, f)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@180-56<Awaiter1, e, Awaiter2, f> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> Data; public int ResumptionPoint; public FSharpFunc<Awaiter1, e> getResult; public FSharpFunc<Awaiter2, f> getResult0; public FSharpFunc<Awaiter1, bool> get_IsCompleted; public FSharpFunc<Awaiter2, bool> get_IsCompleted0; public Awaiter1 left; public FSharpFunc<CancellationToken, Awaiter2> right; public Awaiter2 right0; public e leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num5; int num2; int num3; int num4; bool flag2; ICriticalNotifyCompletion criticalNotifyCompletion; int num6; bool flag4; bool flag3; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num5 = 1; goto IL_0119; case 3: { num2 = 1; goto IL_0189; } IL_0123: if (flag2) { e val = getResult.Invoke(awaiter0); leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right0; flag3 = true; if (((FSharpFunc<?, bool>)(object)get_IsCompleted0).Invoke(awaiter)) { goto IL_0193; } if (false) { goto case 3; } ResumptionPoint = 3; num2 = 0; goto IL_0189; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; goto IL_024e; IL_0193: if (flag3) { f val2 = ((FSharpFunc<?, ?>)(object)getResult0).Invoke(awaiter); f item = val2; (e, f) result = (leftR, item); Data.Result = result; num4 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; } if (num4 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(e); num3 = 1; goto IL_024e; } } goto end_IL_0029; IL_00a2: flag2 = (byte)num != 0; flag = flag2; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; right0 = ((FSharpFunc<CancellationToken, ?>)(object)right).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = left; flag2 = true; if (get_IsCompleted.Invoke(awaiter0)) { goto IL_0123; } if (false) { goto case 2; } ResumptionPoint = 2; num5 = 0; goto IL_0119; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; break; IL_024e: if (num3 != 0) { awaiter0 = default(Awaiter1); if (true) { right0 = default(Awaiter2); num6 = 1; break; } } goto end_IL_0029; IL_0189: flag4 = (byte)num2 != 0; flag3 = flag4; goto IL_0193; IL_0119: flag3 = (byte)num5 != 0; flag2 = flag3; goto IL_0123; } if (num6 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(e, f), AsyncTaskMethodBuilder<(e, f)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@180-57<Awaiter1, e, Awaiter2, f> : FSharpFunc<CancellationToken, Task<(e, f)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, e> getResult; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, f> getResult0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, bool> get_IsCompleted; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, bool> get_IsCompleted0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@180-56<Awaiter1, e, Awaiter2, f> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@180-57(FSharpFunc<Awaiter1, e> getResult, FSharpFunc<Awaiter2, f> getResult0, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted0, MergeSources@180-56<Awaiter1, e, Awaiter2, f> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(e, f)>, ?)>>)(object)this)..ctor(); this.getResult = getResult; this.getResult0 = getResult0; this.get_IsCompleted = get_IsCompleted; this.get_IsCompleted0 = get_IsCompleted0; this.sm = sm; } public override Task<(e, f)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(e, f)>(ct); } MergeSources@180-56<Awaiter1, e, Awaiter2, f> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(e, f)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@179-58<e, f> : FSharpFunc<CancellationToken, TaskAwaiter<(e, f)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(e, f)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@179-58(FSharpFunc<CancellationToken, Task<(e, f)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(e, f)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(e, f)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(e, f)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@203-59<Awaiter1, c, Awaiter2, d> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> Data; public int ResumptionPoint; public FSharpFunc<CancellationToken, Awaiter1> left; public Awaiter2 right; public c leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num2; int num3; bool flag2; int num4; bool flag3; int num5; bool flag4; int num6; ICriticalNotifyCompletion criticalNotifyCompletion; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num2 = 1; goto IL_0116; case 3: { num3 = 1; goto IL_0190; } IL_0116: flag2 = (byte)num2 != 0; flag3 = flag2; goto IL_0120; IL_0120: if (flag3) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } c val = (c)(object)null; leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right; flag2 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_019a; } if (false) { goto case 3; } ResumptionPoint = 3; num3 = 0; goto IL_0190; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; goto IL_025a; IL_00a2: flag3 = (byte)num != 0; flag = flag3; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; Awaiter1 val2 = ((FSharpFunc<CancellationToken, CancellationToken>)(object)left).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = val2; flag3 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_0120; } if (false) { goto case 2; } ResumptionPoint = 2; num2 = 0; goto IL_0116; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num5 = 0; break; IL_0190: flag4 = (byte)num3 != 0; flag2 = flag4; goto IL_019a; IL_025a: if (num4 != 0) { awaiter0 = default(Awaiter1); num5 = 1; break; } goto end_IL_0029; IL_019a: if (flag2) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } d val3 = (d)(object)null; d item = val3; (c, d) result = (leftR, item); Data.Result = result; num6 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; } if (num6 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(c); num4 = 1; goto IL_025a; } } goto end_IL_0029; } if (num5 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@203-60<Awaiter1, c, Awaiter2, d> : FSharpFunc<CancellationToken, Task<(c, d)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@203-59<Awaiter1, c, Awaiter2, d> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@203-60(MergeSources@203-59<Awaiter1, c, Awaiter2, d> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(c, d)>, ?)>>)(object)this)..ctor(); this.sm = sm; } public override Task<(c, d)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(c, d)>(ct); } MergeSources@203-59<Awaiter1, c, Awaiter2, d> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(c, d)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@202-61<c, d> : FSharpFunc<CancellationToken, TaskAwaiter<(c, d)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(c, d)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@202-61(FSharpFunc<CancellationToken, Task<(c, d)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(c, d)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(c, d)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(c, d)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@203-62<Awaiter1, c, Awaiter2, d> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> Data; public int ResumptionPoint; public FSharpFunc<Awaiter1, c> getResult; public FSharpFunc<Awaiter2, d> getResult0; public FSharpFunc<Awaiter1, bool> get_IsCompleted; public FSharpFunc<Awaiter2, bool> get_IsCompleted0; public FSharpFunc<CancellationToken, Awaiter1> left; public Awaiter2 right; public c leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public ValueTaskAwaiter<CancellationToken> awaiter1; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2; try { bool flag; int num; int num5; int num2; int num3; int num4; bool flag2; ICriticalNotifyCompletion criticalNotifyCompletion; int num6; bool flag4; bool flag3; switch (resumptionPoint) { default: { Data.CancellationToken.ThrowIfCancellationRequested(); CancellationToken cancellationToken = Data.CancellationToken; awaiter1 = new ValueTask<CancellationToken>(cancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { goto IL_00ac; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a2; } case 1: num = 1; goto IL_00a2; case 2: num5 = 1; goto IL_0111; case 3: { num2 = 1; goto IL_0181; } IL_011b: if (flag2) { c val = getResult.Invoke(awaiter0); leftR = val; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right; flag3 = true; if (((FSharpFunc<?, bool>)(object)get_IsCompleted0).Invoke(awaiter)) { goto IL_018b; } if (false) { goto case 3; } ResumptionPoint = 3; num2 = 0; goto IL_0181; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; goto IL_0246; IL_018b: if (flag3) { d val2 = ((FSharpFunc<?, ?>)(object)getResult0).Invoke(awaiter); d item = val2; (c, d) result = (leftR, item); Data.Result = result; num4 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; } if (num4 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(c); num3 = 1; goto IL_0246; } } goto end_IL_0029; IL_00a2: flag2 = (byte)num != 0; flag = flag2; goto IL_00ac; IL_00ac: if (flag) { CancellationToken cancellationToken = awaiter1.GetResult(); CancellationToken cancellationToken2 = cancellationToken; Awaiter1 val3 = ((FSharpFunc<CancellationToken, CancellationToken>)(object)left).Invoke(cancellationToken2); Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = val3; flag2 = true; if (get_IsCompleted.Invoke(awaiter0)) { goto IL_011b; } if (false) { goto case 2; } ResumptionPoint = 2; num5 = 0; goto IL_0111; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; break; IL_0246: if (num3 != 0) { awaiter0 = default(Awaiter1); num6 = 1; break; } goto end_IL_0029; IL_0181: flag4 = (byte)num2 != 0; flag3 = flag4; goto IL_018b; IL_0111: flag3 = (byte)num5 != 0; flag2 = flag3; goto IL_011b; } if (num6 != 0) { awaiter1 = default(ValueTaskAwaiter<CancellationToken>); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase.CancellableTaskBaseStateMachineData<(c, d), AsyncTaskMethodBuilder<(c, d)>> value) { Data = value; } } [Serializable] internal sealed class MergeSources@203-63<Awaiter1, c, Awaiter2, d> : FSharpFunc<CancellationToken, Task<(c, d)>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, c> getResult; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, d> getResult0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter1, bool> get_IsCompleted; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<Awaiter2, bool> get_IsCompleted0; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MergeSources@203-62<Awaiter1, c, Awaiter2, d> sm; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@203-63(FSharpFunc<Awaiter1, c> getResult, FSharpFunc<Awaiter2, d> getResult0, FSharpFunc<Awaiter1, bool> get_IsCompleted, FSharpFunc<Awaiter2, bool> get_IsCompleted0, MergeSources@203-62<Awaiter1, c, Awaiter2, d> sm) { ((FSharpFunc<CancellationToken, Task<(Task<(c, d)>, ?)>>)(object)this)..ctor(); this.getResult = getResult; this.getResult0 = getResult0; this.get_IsCompleted = get_IsCompleted; this.get_IsCompleted0 = get_IsCompleted0; this.sm = sm; } public override Task<(c, d)> Invoke(CancellationToken ct) { if (ct.IsCancellationRequested) { return Task.FromCanceled<(c, d)>(ct); } MergeSources@203-62<Awaiter1, c, Awaiter2, d> stateMachine = sm; stateMachine.Data.CancellationToken = ct; stateMachine.Data.MethodBuilder = AsyncTaskMethodBuilder<(c, d)>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class MergeSources@202-64<c, d> : FSharpFunc<CancellationToken, TaskAwaiter<(c, d)>> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc<CancellationToken, Task<(c, d)>> x; [CompilerGenerated] [DebuggerNonUserCode] internal MergeSources@202-64(FSharpFunc<CancellationToken, Task<(c, d)>> x) { ((FSharpFunc<CancellationToken, TaskAwaiter<(CancellationToken, TaskAwaiter<(c, d)>)>>)(object)this)..ctor(); this.x = x; } public override TaskAwaiter<(c, d)> Invoke(CancellationToken ct) { return ((FSharpFunc<CancellationToken, Task<(CancellationToken, Task<(c, d)>)>>)(object)x).Invoke(ct).GetAwaiter(); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct MergeSources@221-65<Awaiter1, a, Awaiter2, b> : IAsyncStateMachine, IResumableStateMachine<CancellableTaskBase.CancellableTaskBaseStateMachineData<(a, b), AsyncTaskMethodBuilder<(a, b)>>> where Awaiter1 : ICriticalNotifyCompletion where Awaiter2 : ICriticalNotifyCompletion { public CancellableTaskBase.CancellableTaskBaseStateMachineData<(a, b), AsyncTaskMethodBuilder<(a, b)>> Data; public int ResumptionPoint; public Awaiter1 left; public Awaiter2 right; public a leftR; public Awaiter2 awaiter; public Awaiter1 awaiter0; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: break; } Exception ex2; try { bool flag; int num; int num2; bool flag2; int num3; int num4; bool flag3; ICriticalNotifyCompletion criticalNotifyCompletion; switch (resumptionPoint) { default: Data.CancellationToken.ThrowIfCancellationRequested(); awaiter0 = left; flag = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_008f; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0086; case 1: num = 1; goto IL_0086; case 2: { num2 = 1; goto IL_00fe; } IL_00fe: flag2 = (byte)num2 != 0; flag3 = flag2; goto IL_0108; IL_0108: if (flag3) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } b val = (b)(object)null; b item = val; (a, b) result = (leftR, item); Data.Result = result; num3 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; } if (num3 != 0) { awaiter = default(Awaiter2); if (true) { leftR = default(a); num4 = 1; break; } } goto end_IL_0022; IL_0086: flag3 = (byte)num != 0; flag = flag3; goto IL_008f; IL_008f: if (flag) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of GetResult is not supported"); } a val2 = (a)(object)null; leftR = val2; Data.CancellationToken.ThrowIfCancellationRequested(); awaiter = right; flag3 = true; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of get_IsCompleted is not supported"); } if ((bool)(object)null) { goto IL_0108; } if (false) { goto case 2; } ResumptionPoint = 2; num2 = 0; goto IL_00fe; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; break; } if (num4 != 0) { awaiter0 = default(Awaiter1); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0022:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override CancellableTaskBase.CancellableTaskBaseStateMachineData<(a, b), AsyncTaskMethodBuilder<(a, b)>> get_Data() { return Data; } public override void set_Data(CancellableTaskBase
SileroVAD/SileroVAD.dll
Decompiled a year agousing System; using System.Collections; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using Microsoft.FSharp.Core; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SileroVAD")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+d8a68af14ecdecac2d49914fe6b18a3c458a22ff")] [assembly: AssemblyProduct("SileroVAD")] [assembly: AssemblyTitle("SileroVAD")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default)] [assembly: AssemblyVersion("1.0.0.0")] namespace Silero { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class API { [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [DebuggerDisplay("{__DebugDisplay(),nq}")] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class SileroVAD : IEquatable<SileroVAD>, IStructuralEquatable, IComparable<SileroVAD>, IComparable, IStructuralComparable { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly IntPtr item; [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int Tag { [CompilerGenerated] [DebuggerNonUserCode] get { return 0; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] internal IntPtr Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static SileroVAD NewSileroVAD(IntPtr item) { return new SileroVAD(item); } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(SileroVAD))] [CompilerGenerated] [DebuggerNonUserCode] internal SileroVAD(IntPtr item) { this.item = item; } [SpecialName] [CompilerGenerated] [DebuggerNonUserCode] internal object __DebugDisplay() { return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<SileroVAD, string>>((PrintfFormat<FSharpFunc<SileroVAD, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<SileroVAD, string>, Unit, string, string, string>("%+0.8A")).Invoke(this); } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<SileroVAD, string>>((PrintfFormat<FSharpFunc<SileroVAD, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<SileroVAD, string>, Unit, string, string, SileroVAD>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(SileroVAD obj) { if (this != null) { if (obj != null) { IComparer genericComparer = LanguagePrimitives.GenericComparer; IntPtr intPtr = item; IntPtr intPtr2 = obj.item; return (((nint)intPtr > (nint)intPtr2) ? 1 : 0) - (((nint)intPtr < (nint)intPtr2) ? 1 : 0); } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((SileroVAD)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { SileroVAD sileroVAD = (SileroVAD)obj; if (this != null) { if ((SileroVAD)obj != null) { SileroVAD sileroVAD2 = sileroVAD; IntPtr intPtr = item; IntPtr intPtr2 = sileroVAD2.item; return (((nint)intPtr > (nint)intPtr2) ? 1 : 0) - (((nint)intPtr < (nint)intPtr2) ? 1 : 0); } return 1; } if ((SileroVAD)obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; num = 0; IntPtr intPtr = item; return -1640531527 + ((int)(nuint)(nint)intPtr + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (this != null) { if (obj is SileroVAD sileroVAD) { SileroVAD sileroVAD2 = sileroVAD; return item == sileroVAD2.item; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(SileroVAD obj) { if (this != null) { if (obj != null) { return item == obj.item; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is SileroVAD obj2) { return Equals(obj2); } return false; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public enum LogLevel { Verbose, Info, Warning, Error, Fatal } public static SileroVAD SileroVAD(int windowSize) { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); return API.SileroVAD.NewSileroVAD(Foreign.init_silero(new Foreign.SileroInitParams(Path.Combine(directoryName, "onnxruntime.dll"), Path.Combine(directoryName, "silero_vad.onnx"), 3, 1, Environment.ProcessorCount, windowSize))); } public static void releaseSilero(SileroVAD _arg1) { Foreign.release_silero(_arg1.item); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static float detectSpeech(SileroVAD _arg1, float[] pcmData, int pcmLength) { IntPtr item = _arg1.item; return Foreign.detect_speech(item, pcmData, pcmLength); } } } namespace <StartupCode$SileroVAD>.$Silero { internal static class API { } } namespace Silero { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Foreign { [Serializable] [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct SileroInitParams : IEquatable<SileroInitParams>, IStructuralEquatable, IComparable<SileroInitParams>, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal string onnxruntime_path@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal string model_path@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int log_level@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int inter_threads@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int intra_threads@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int window_size@; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly string onnxruntime_path { [CompilerGenerated] [DebuggerNonUserCode] get { return onnxruntime_path@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly string model_path { [CompilerGenerated] [DebuggerNonUserCode] get { return model_path@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly int log_level { [CompilerGenerated] [DebuggerNonUserCode] get { return log_level@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly int inter_threads { [CompilerGenerated] [DebuggerNonUserCode] get { return inter_threads@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly int intra_threads { [CompilerGenerated] [DebuggerNonUserCode] get { return intra_threads@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal readonly int window_size { [CompilerGenerated] [DebuggerNonUserCode] get { return window_size@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(SileroInitParams))] internal SileroInitParams(string onnxruntime_path, string model_path, int log_level, int inter_threads, int intra_threads, int window_size) { onnxruntime_path@ = onnxruntime_path; model_path@ = model_path; log_level@ = log_level; inter_threads@ = inter_threads; intra_threads@ = intra_threads; window_size@ = window_size; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<SileroInitParams, string>>((PrintfFormat<FSharpFunc<SileroInitParams, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<SileroInitParams, string>, Unit, string, string, SileroInitParams>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(SileroInitParams obj) { IComparer genericComparer = LanguagePrimitives.GenericComparer; int num = string.CompareOrdinal(onnxruntime_path@, obj.onnxruntime_path@); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; int num2 = string.CompareOrdinal(model_path@, obj.model_path@); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } genericComparer = LanguagePrimitives.GenericComparer; int num3 = log_level@; int num4 = obj.log_level@; int num5 = ((num3 > num4) ? 1 : 0) - ((num3 < num4) ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } genericComparer = LanguagePrimitives.GenericComparer; num4 = inter_threads@; int num6 = obj.inter_threads@; num3 = ((num4 > num6) ? 1 : 0) - ((num4 < num6) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } genericComparer = LanguagePrimitives.GenericComparer; num6 = intra_threads@; int num7 = obj.intra_threads@; num4 = ((num6 > num7) ? 1 : 0) - ((num6 < num7) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } genericComparer = LanguagePrimitives.GenericComparer; num6 = window_size@; num7 = obj.window_size@; return ((num6 > num7) ? 1 : 0) - ((num6 < num7) ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((SileroInitParams)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { SileroInitParams sileroInitParams = (SileroInitParams)obj; int num = string.CompareOrdinal(onnxruntime_path@, sileroInitParams.onnxruntime_path@); if (num < 0) { return num; } if (num > 0) { return num; } int num2 = string.CompareOrdinal(model_path@, sileroInitParams.model_path@); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } int num3 = log_level@; int num4 = sileroInitParams.log_level@; int num5 = ((num3 > num4) ? 1 : 0) - ((num3 < num4) ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } num4 = inter_threads@; int num6 = sileroInitParams.inter_threads@; num3 = ((num4 > num6) ? 1 : 0) - ((num4 < num6) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } num6 = intra_threads@; int num7 = sileroInitParams.intra_threads@; num4 = ((num6 > num7) ? 1 : 0) - ((num6 < num7) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } num6 = window_size@; num7 = sileroInitParams.window_size@; return ((num6 > num7) ? 1 : 0) - ((num6 < num7) ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { int num = 0; num = -1640531527 + (window_size@ + ((num << 6) + (num >> 2))); num = -1640531527 + (intra_threads@ + ((num << 6) + (num >> 2))); num = -1640531527 + (inter_threads@ + ((num << 6) + (num >> 2))); num = -1640531527 + (log_level@ + ((num << 6) + (num >> 2))); num = -1640531527 + ((model_path@?.GetHashCode() ?? 0) + ((num << 6) + (num >> 2))); return -1640531527 + ((onnxruntime_path@?.GetHashCode() ?? 0) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is SileroInitParams sileroInitParams) { if (string.Equals(onnxruntime_path@, sileroInitParams.onnxruntime_path@)) { if (string.Equals(model_path@, sileroInitParams.model_path@)) { if (log_level@ == sileroInitParams.log_level@) { if (inter_threads@ == sileroInitParams.inter_threads@) { if (intra_threads@ == sileroInitParams.intra_threads@) { return window_size@ == sileroInitParams.window_size@; } return false; } return false; } return false; } return false; } return false; } return false; } [CompilerGenerated] public sealed bool Equals(SileroInitParams obj) { if (string.Equals(onnxruntime_path@, obj.onnxruntime_path@)) { if (string.Equals(model_path@, obj.model_path@)) { if (log_level@ == obj.log_level@) { if (inter_threads@ == obj.inter_threads@) { if (intra_threads@ == obj.intra_threads@) { return window_size@ == obj.window_size@; } return false; } return false; } return false; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is SileroInitParams) { return Equals((SileroInitParams)obj); } return false; } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const string dll = "SileroVAD.API.dll"; [DllImport("SileroVAD.API.dll")] internal static extern IntPtr init_silero(SileroInitParams _arg1); [DllImport("SileroVAD.API.dll")] internal static extern void release_silero(IntPtr _arg1); [DllImport("SileroVAD.API.dll")] internal static extern float detect_speech(IntPtr _arg1, float[] _arg2, long _arg3); } } namespace <StartupCode$SileroVAD>.$Silero { internal static class Foreign { } internal static class AssemblyInfo { } } namespace <StartupCode$SileroVAD>.$.NETStandard,Version=v2.1 { internal static class AssemblyAttributes { } } namespace System.Diagnostics.CodeAnalysis { [Serializable] [Flags] [CompilerGenerated] [DebuggerNonUserCode] internal enum DynamicallyAccessedMemberTypes { All = -1, None = 0, PublicParameterlessConstructor = 1, PublicConstructors = 3, NonPublicConstructors = 4, PublicMethods = 8, NonPublicMethods = 0x10, PublicFields = 0x20, NonPublicFields = 0x40, PublicNestedTypes = 0x80, NonPublicNestedTypes = 0x100, PublicProperties = 0x200, NonPublicProperties = 0x400, PublicEvents = 0x800, NonPublicEvents = 0x1000, Interfaces = 0x2000 } [CompilerGenerated] internal class DynamicDependencyAttribute : Attribute { [CompilerGenerated] [DebuggerNonUserCode] private DynamicallyAccessedMemberTypes MemberType@; [CompilerGenerated] [DebuggerNonUserCode] private Type Type@; [CompilerGenerated] [DebuggerNonUserCode] public DynamicallyAccessedMemberTypes MemberType { [CompilerGenerated] [DebuggerNonUserCode] get { return MemberType@; } } [CompilerGenerated] [DebuggerNonUserCode] public Type Type { [CompilerGenerated] [DebuggerNonUserCode] get { return Type@; } } [CompilerGenerated] [DebuggerNonUserCode] public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes MemberType, Type Type) { MemberType@ = MemberType; Type@ = Type; } } }
FSharpPlus/FSharpPlus.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Linq; using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using <StartupCode$FSharpPlus>; using FSharpPlus; using FSharpPlus.Control; using FSharpPlus.Data; using FSharpPlus.Internals; using Microsoft.FSharp.Collections; using Microsoft.FSharp.Control; using Microsoft.FSharp.Core; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Quotations; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("gusty; wallymathieu")] [assembly: AssemblyCopyright("2012-2024 Gustavo M. Wild - Oskar Gewalli (and contributors https://github.com/fsprojects/FSharpPlus/graphs/contributors)")] [assembly: AssemblyInformationalVersion("1.6.1")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/fsprojects/FSharpPlus")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] namespace FSharpPlus.Internals { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default6 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default5 : Default6 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default4 : Default5 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default3 : Default4 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default2 : Default3 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Default1 : Default2 { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Id<t> { internal t value; public t getValue => value; public Id(t v) { value = v; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Id0 { internal string value; public string getValue => value; public Id0(string v) { value = v; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [DebuggerDisplay("{__DebugDisplay(),nq}")] [CompilationMapping(/*Could not decode attribute arguments.*/)] public abstract class Either<t, u> : IEquatable<Either<t, u>>, IStructuralEquatable, IComparable<Either<t, u>>, IComparable, IStructuralComparable { public static class Tags { public const int Left = 0; public const int Right = 1; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(Either<, >.Left@DebugTypeProxy))] [DebuggerDisplay("{__DebugDisplay(),nq}")] public class Left : Either<t, u> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly t item; [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public t Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [CompilerGenerated] [DebuggerNonUserCode] internal Left(t item) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(Either<, >.Right@DebugTypeProxy))] [DebuggerDisplay("{__DebugDisplay(),nq}")] public class Right : Either<t, u> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly u item; [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public u Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [CompilerGenerated] [DebuggerNonUserCode] internal Right(u item) { this.item = item; } } [SpecialName] internal class Left@DebugTypeProxy { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public t Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [CompilerGenerated] [DebuggerNonUserCode] public Left@DebugTypeProxy(Left obj) { _obj = obj; } } [SpecialName] internal class Right@DebugTypeProxy { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public u Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [CompilerGenerated] [DebuggerNonUserCode] public Right@DebugTypeProxy(Right obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [CompilerGenerated] [DebuggerNonUserCode] get { return (this is Right) ? 1 : 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsLeft { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Left; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsRight { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Right; } } [CompilerGenerated] [DebuggerNonUserCode] internal Either() { } [CompilationMapping(/*Could not decode attribute arguments.*/)] public static Either<t, u> NewLeft(t item) { return new Left(item); } [CompilationMapping(/*Could not decode attribute arguments.*/)] public static Either<t, u> NewRight(u item) { return new Right(item); } [SpecialName] [CompilerGenerated] [DebuggerNonUserCode] internal object __DebugDisplay() { return ((FSharpFunc<Either<Either<t, u>, string>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Either<t, u>, string>>((PrintfFormat<FSharpFunc<Either<t, u>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<Either<FSharpFunc<Either<t, u>, string>, Unit>, string>, Unit, string, string, string>("%+0.8A"))).Invoke((Either<Either<t, u>, string>)(object)this); } [CompilerGenerated] public override string ToString() { return ((FSharpFunc<Either<Either<t, u>, string>, string>)(object)ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Either<t, u>, string>>((PrintfFormat<FSharpFunc<Either<t, u>, string>, Unit, string, string>)(object)new PrintfFormat<FSharpFunc<Either<FSharpFunc<Either<t, u>, string>, Unit>, string>, Unit, string, string, Either<FSharpFunc<Either<t, u>, string>, Unit>>("%+A"))).Invoke((Either<Either<t, u>, string>)(object)this); } [CompilerGenerated] public virtual sealed int CompareTo(Either<t, u> obj) { if (this != null) { if (obj != null) { int num = ((this is Right) ? 1 : 0); int num2 = ((obj is Right) ? 1 : 0); if (num == num2) { IComparer genericComparer; if (this is Left) { Left left = (Left)this; Left left2 = (Left)obj; genericComparer = LanguagePrimitives.GenericComparer; t item = left.item; t item2 = left2.item; return HashCompare.GenericComparisonWithComparerIntrinsic<t>(genericComparer, item, item2); } Right right = (Right)this; Right right2 = (Right)obj; genericComparer = LanguagePrimitives.GenericComparer; u item3 = right.item; u item4 = right2.item; return HashCompare.GenericComparisonWithComparerIntrinsic<u>(genericComparer, item3, item4); } return num - num2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((Either<t, u>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { Either<t, u> either = (Either<t, u>)obj; if (this != null) { if ((Either<t, u>)obj != null) { int num = ((this is Right) ? 1 : 0); Either<t, u> either2 = either; int num2 = ((either2 is Right) ? 1 : 0); if (num == num2) { if (this is Left) { Left left = (Left)this; Left left2 = (Left)either; t item = left.item; t item2 = left2.item; return HashCompare.GenericComparisonWithComparerIntrinsic<t>(comp, item, item2); } Right right = (Right)this; Right right2 = (Right)either; u item3 = right.item; u item4 = right2.item; return HashCompare.GenericComparisonWithComparerIntrinsic<u>(comp, item3, item4); } return num - num2; } return 1; } if ((Either<t, u>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; if (this is Left) { Left left = (Left)this; num = 0; t item = left.item; return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<t>(comp, item) + ((num << 6) + (num >> 2))); } Right right = (Right)this; num = 1; u item2 = right.item; return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<u>(comp, item2) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (this != null) { if (obj is Either<t, u> either) { int num = ((this is Right) ? 1 : 0); Either<t, u> either2 = either; int num2 = ((either2 is Right) ? 1 : 0); if (num == num2) { if (this is Left) { Left left = (Left)this; Left left2 = (Left)either; t item = left.item; t item2 = left2.item; return HashCompare.GenericEqualityWithComparerIntrinsic<t>(comp, item, item2); } Right right = (Right)this; Right right2 = (Right)either; u item3 = right.item; u item4 = right2.item; return HashCompare.GenericEqualityWithComparerIntrinsic<u>(comp, item3, item4); } return false; } return false; } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(Either<t, u> obj) { if (this != null) { if (obj != null) { int num = ((this is Right) ? 1 : 0); int num2 = ((obj is Right) ? 1 : 0); if (num == num2) { if (this is Left) { Left left = (Left)this; Left left2 = (Left)obj; t item = left.item; t item2 = left2.item; return HashCompare.GenericEqualityERIntrinsic<t>(item, item2); } Right right = (Right)this; Right right2 = (Right)obj; u item3 = right.item; u item4 = right2.item; return HashCompare.GenericEqualityERIntrinsic<u>(item3, item4); } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is Either<t, u> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Sequential, Size = 1)] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct DmStruct : IEquatable<DmStruct>, IStructuralEquatable, IComparable<DmStruct>, IComparable, IStructuralComparable { [CompilerGenerated] public sealed int CompareTo(DmStruct obj) { return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { DmStruct dmStruct = (DmStruct)obj; return 0; } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { DmStruct dmStruct = (DmStruct)obj; return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is DmStruct) { return true; } return false; } [CompilerGenerated] public sealed bool Equals(DmStruct obj) { return true; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is DmStruct) { return true; } return false; } } [Serializable] [StructLayout(LayoutKind.Sequential, Size = 1)] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct DmStruct1<T1> : IEquatable<DmStruct1<T1>>, IStructuralEquatable, IComparable<DmStruct1<T1>>, IComparable, IStructuralComparable { [CompilerGenerated] public sealed int CompareTo(DmStruct1<T1> obj) { return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { DmStruct1<T1> dmStruct = (DmStruct1<T1>)obj; return 0; } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { DmStruct1<T1> dmStruct = (DmStruct1<T1>)obj; return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is DmStruct1<T1>) { return true; } return false; } [CompilerGenerated] public sealed bool Equals(DmStruct1<T1> obj) { return true; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is DmStruct1<T1>) { return true; } return false; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct KeyValuePair2<TKey, TValue> : IEquatable<KeyValuePair2<TKey, TValue>>, IStructuralEquatable, IComparable<KeyValuePair2<TKey, TValue>>, IComparable, IStructuralComparable { internal TKey Key@; internal TValue Value@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public TKey Key => Key@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public TValue Value => Value@; [CompilerGenerated] public sealed int CompareTo(KeyValuePair2<TKey, TValue> obj) { IComparer genericComparer = LanguagePrimitives.GenericComparer; TKey key@ = Key@; TKey key@2 = obj.Key@; int num = HashCompare.GenericComparisonWithComparerIntrinsic<TKey>(genericComparer, key@, key@2); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; TValue value@ = Value@; TValue value@2 = obj.Value@; return HashCompare.GenericComparisonWithComparerIntrinsic<TValue>(genericComparer, value@, value@2); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((KeyValuePair2<TKey, TValue>)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { KeyValuePair2<TKey, TValue> keyValuePair = (KeyValuePair2<TKey, TValue>)obj; TKey key@ = Key@; TKey key@2 = keyValuePair.Key@; int num = HashCompare.GenericComparisonWithComparerIntrinsic<TKey>(comp, key@, key@2); if (num < 0) { return num; } if (num > 0) { return num; } TValue value@ = Value@; TValue value@2 = keyValuePair.Value@; return HashCompare.GenericComparisonWithComparerIntrinsic<TValue>(comp, value@, value@2); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { int num = 0; TValue value@ = Value@; num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<TValue>(comp, value@) + ((num << 6) + (num >> 2))); TKey key@ = Key@; return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic<TKey>(comp, key@) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is KeyValuePair2<TKey, TValue> keyValuePair) { TKey key@ = Key@; TKey key@2 = keyValuePair.Key@; if (HashCompare.GenericEqualityWithComparerIntrinsic<TKey>(comp, key@, key@2)) { TValue value@ = Value@; TValue value@2 = keyValuePair.Value@; return HashCompare.GenericEqualityWithComparerIntrinsic<TValue>(comp, value@, value@2); } return false; } return false; } public KeyValuePair2(TKey key, TValue value) { Key@ = key; Value@ = value; } [CompilerGenerated] public sealed bool Equals(KeyValuePair2<TKey, TValue> obj) { TKey key@ = Key@; TKey key@2 = obj.Key@; if (HashCompare.GenericEqualityERIntrinsic<TKey>(key@, key@2)) { TValue value@ = Value@; TValue value@2 = obj.Value@; return HashCompare.GenericEqualityERIntrinsic<TValue>(value@, value@2); } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is KeyValuePair2<TKey, TValue>) { return Equals((KeyValuePair2<TKey, TValue>)obj); } return false; } } [Serializable] [Sealed] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class Set2<T> { } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class BitConverter { public static byte[] GetBytes(bool value) { return new byte[1] { (byte)(value ? 1 : 0) }; } public static byte[] GetBytes(char value, bool isLittleEndian) { return GetBytes((short)value, isLittleEndian); } public unsafe static byte[] GetBytes(short value, bool isLittleEndian) { //The blocks IL_004a are reachable both inside and outside the pinned region starting at IL_003c. ILSpy has duplicated these blocks in order to place them both within and outside the `fixed` statement. if (!isLittleEndian) { return new byte[2] { (byte)(short)(value >> 8), (byte)value }; } byte[] array = ArrayModule.ZeroCreate<byte>(2); nint num; IntPtr intPtr; if (array != null) { if (ArrayModule.Length<byte>(array) != 0) { fixed (byte* ptr = &array[0]) { num = (intPtr = (nint)ptr); *(short*)intPtr = value; return array; } } num = 0; } else { num = 0; } intPtr = num; *(short*)intPtr = value; return array; } public unsafe static byte[] GetBytes(int value, bool isLittleEndian) { //The blocks IL_0061 are reachable both inside and outside the pinned region starting at IL_0053. ILSpy has duplicated these blocks in order to place them both within and outside the `fixed` statement. if (!isLittleEndian) { return new byte[4] { (byte)(value >> 24), (byte)(value >> 16), (byte)(value >> 8), (byte)value }; } byte[] array = ArrayModule.ZeroCreate<byte>(4); nint num; IntPtr intPtr; if (array != null) { if (ArrayModule.Length<byte>(array) != 0) { fixed (byte* ptr = &array[0]) { num = (intPtr = (nint)ptr); *(int*)intPtr = value; return array; } } num = 0; } else { num = 0; } intPtr = num; *(int*)intPtr = value; return array; } public unsafe static byte[] GetBytes(long value, bool isLittleEndian) { //The blocks IL_0091 are reachable both inside and outside the pinned region starting at IL_0083. ILSpy has duplicated these blocks in order to place them both within and outside the `fixed` statement. if (!isLittleEndian) { return new byte[8] { (byte)(value >> 56), (byte)(value >> 48), (byte)(value >> 40), (byte)(value >> 32), (byte)(value >> 24), (byte)(value >> 16), (byte)(value >> 8), (byte)value }; } byte[] array = ArrayModule.ZeroCreate<byte>(8); nint num; IntPtr intPtr; if (array != null) { if (ArrayModule.Length<byte>(array) != 0) { fixed (byte* ptr = &array[0]) { num = (intPtr = (nint)ptr); *(long*)intPtr = value; return array; } } num = 0; } else { num = 0; } intPtr = num; *(long*)intPtr = value; return array; } public static byte[] GetBytes(ushort value, bool isLittleEndian) { return GetBytes((short)value, isLittleEndian); } public static byte[] GetBytes(uint value, bool isLittleEndian) { return GetBytes((int)value, isLittleEndian); } public static byte[] GetBytes(ulong value, bool isLittleEndian) { return GetBytes((long)value, isLittleEndian); } public unsafe static byte[] GetBytes(float value, bool isLittleEndian) { float num = value; return GetBytes(*(int*)(&num), isLittleEndian); } public unsafe static byte[] GetBytes(double value, bool isLittleEndian) { double num = value; return GetBytes(*(long*)(&num), isLittleEndian); } public static byte[] GetBytes(Guid value, bool isLittleEndian) { byte[] array = value.ToByteArray(); if (isLittleEndian) { return array; } return $Internals.GetBytes$cont@204(array, null); } public static char ToChar(byte[] value, int startIndex, bool isLittleEndian) { return (char)ToInt16(value, startIndex, isLittleEndian); } public unsafe static short ToInt16(byte[] value, int startIndex, bool isLittleEndian) { if (value == null) { throw new ArgumentNullException("value"); } if (startIndex >= value.Length) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("startIndex", "ArgumentOutOfRange_Index"); throw ex; } if (startIndex > value.Length - 2) { ArgumentException ex2 = new ArgumentException("Arg_ArrayPlusOffTooSmall"); throw ex2; } fixed (byte* ptr = &value[startIndex]) { nint num = (nint)ptr; short num3; if (isLittleEndian) { if (startIndex % 2 == 0) { return *(short*)num; } short num2 = *(byte*)(num + (nint)0 * (nint)sizeof(byte)); num3 = *(byte*)(num + (nint)1 * (nint)sizeof(byte)); return (short)(num2 | (short)(num3 << 8)); } num3 = *(byte*)(num + (nint)0 * (nint)sizeof(byte)); return (short)((short)(num3 << 8) | (short)(*(byte*)(num + (nint)1 * (nint)sizeof(byte)))); } } public unsafe static int ToInt32(byte[] value, int startIndex, bool isLittleEndian) { if (value == null) { throw new ArgumentNullException("value"); } if (startIndex >= value.Length) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("startIndex", "ArgumentOutOfRange_Index"); throw ex; } if (startIndex > value.Length - 4) { ArgumentException ex2 = new ArgumentException("Arg_ArrayPlusOffTooSmall"); throw ex2; } fixed (byte* ptr = &value[startIndex]) { nint num = (nint)ptr; if (isLittleEndian) { if (startIndex % 4 == 0) { return *(int*)num; } return *(byte*)(num + (nint)0 * (nint)sizeof(byte)) | (*(byte*)(num + (nint)1 * (nint)sizeof(byte)) << 8) | (*(byte*)(num + (nint)2 * (nint)sizeof(byte)) << 16) | (*(byte*)(num + (nint)3 * (nint)sizeof(byte)) << 24); } return (*(byte*)(num + (nint)0 * (nint)sizeof(byte)) << 24) | (*(byte*)(num + (nint)1 * (nint)sizeof(byte)) << 16) | (*(byte*)(num + (nint)2 * (nint)sizeof(byte)) << 8) | *(byte*)(num + (nint)3 * (nint)sizeof(byte)); } } public unsafe static long ToInt64(byte[] value, int startIndex, bool isLittleEndian) { if (value == null) { throw new ArgumentNullException("value"); } if (startIndex >= value.Length) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("startIndex", "ArgumentOutOfRange_Index"); throw ex; } if (startIndex > value.Length - 8) { ArgumentException ex2 = new ArgumentException("Arg_ArrayPlusOffTooSmall"); throw ex2; } fixed (byte* ptr = &value[startIndex]) { nint num = (nint)ptr; long num2; if (isLittleEndian) { if (startIndex % 8 == 0) { return *(long*)num; } num2 = (long)(*(byte*)(num + (nint)0 * (nint)sizeof(byte)) | ((ulong)(*(byte*)(num + (nint)1 * (nint)sizeof(byte))) << 8) | ((ulong)(*(byte*)(num + (nint)2 * (nint)sizeof(byte))) << 16) | ((ulong)(*(byte*)(num + (nint)3 * (nint)sizeof(byte))) << 24)); long num3 = (long)(*(byte*)(num + (nint)4 * (nint)sizeof(byte)) | ((ulong)(*(byte*)(num + (nint)5 * (nint)sizeof(byte))) << 8) | ((ulong)(*(byte*)(num + (nint)6 * (nint)sizeof(byte))) << 16) | ((ulong)(*(byte*)(num + (nint)7 * (nint)sizeof(byte))) << 24)); return num2 | (num3 << 32); } num2 = (long)(((ulong)(*(byte*)(num + (nint)0 * (nint)sizeof(byte))) << 24) | ((ulong)(*(byte*)(num + (nint)1 * (nint)sizeof(byte))) << 16) | ((ulong)(*(byte*)(num + (nint)2 * (nint)sizeof(byte))) << 8) | *(byte*)(num + (nint)3 * (nint)sizeof(byte))); return (long)(((ulong)(*(byte*)(num + (nint)4 * (nint)sizeof(byte))) << 24) | ((ulong)(*(byte*)(num + (nint)5 * (nint)sizeof(byte))) << 16) | ((ulong)(*(byte*)(num + (nint)6 * (nint)sizeof(byte))) << 8) | *(byte*)(num + (nint)7 * (nint)sizeof(byte))) | (num2 << 32); } } public static Guid ToGuid(byte[] value, int startIndex, bool isLittleEndian) { if (value == null) { throw new ArgumentNullException("value"); } if (startIndex >= value.Length) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("startIndex", "ArgumentOutOfRange_Index"); throw ex; } if (startIndex > value.Length - 16) { ArgumentException ex2 = new ArgumentException("Arg_ArrayPlusOffTooSmall"); throw ex2; } if (isLittleEndian) { if (startIndex == 0) { return new Guid(value); } int num = startIndex + 15; int num2 = value.Length; int num3 = ((startIndex >= 0) ? startIndex : 0); int num4 = ((num >= 0 + num2) ? (0 + num2 - 1) : num); int num5 = num4 - num3 + 1; int num6 = ((num5 >= 0) ? num5 : 0); byte[] array = new byte[num6]; int num7 = 0; int num8 = num6 - 1; if (num8 >= num7) { do { array[num7] = value[num3 + num7]; num7++; } while (num7 != num8 + 1); } return new Guid(array); } return $Internals.ToGuid$cont@264(value, startIndex, null); } public static ushort ToUInt16(byte[] value, int startIndex, bool isLittleEndian) { return (ushort)ToInt16(value, startIndex, isLittleEndian); } public static uint ToUInt32(byte[] value, int startIndex, bool isLittleEndian) { return (uint)ToInt32(value, startIndex, isLittleEndian); } public static ulong ToUInt64(byte[] value, int startIndex, bool isLittleEndian) { return (ulong)ToInt64(value, startIndex, isLittleEndian); } public unsafe static float ToSingle(byte[] value, int startIndex, bool isLittleEndian) { int num = ToInt32(value, startIndex, isLittleEndian); return *(float*)(&num); } public unsafe static double ToDouble(byte[] value, int startIndex, bool isLittleEndian) { long num = ToInt64(value, startIndex, isLittleEndian); return *(double*)(&num); } internal static char GetHexValue(int i) { char c; if (i < 10) { c = (char)i; return (char)(c + 48); } c = (char)(i - 10); return (char)(c + 65); } public static string ToString(byte[] value, int startIndex, int length) { if (value == null) { throw new ArgumentNullException("value"); } int num = value.Length; if (startIndex >= value.Length) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("startIndex", "ArgumentOutOfRange_StartIndex"); throw ex; } if (length < 0) { ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException("length", "ArgumentOutOfRange_GenericPositive"); throw ex; } if (startIndex > num - length) { ArgumentException ex2 = new ArgumentException("Arg_ArrayPlusOffTooSmall"); throw ex2; } if (length == 0) { return string.Empty; } char[] array = ArrayModule.ZeroCreate<char>(length * 3); int num2 = startIndex; IEnumerable<int> enumerable = OperatorIntrinsics.RangeInt32(0, 3, 3 * length - 1); foreach (int item in enumerable) { int num3 = value[num2]; num2++; array[item] = GetHexValue(num3 / 16); array[item + 1] = GetHexValue(num3 % 16); array[item + 2] = '-'; } return new string(array, 0, array.Length - 1); } public static string ToString(byte[] value) { if (value == null) { throw new ArgumentNullException("value"); } return ToString(value, 0, value.Length); } public static string ToString(byte[] value, int startIndex) { if (value == null) { throw new ArgumentNullException("value"); } return ToString(value, startIndex, value.Length - startIndex); } } } namespace FSharpPlus.Data { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public interface NonEmptySeq<T> : IEnumerable<T> { T First { get; } } } namespace FSharpPlus.Control { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Explicit : Default1 { public static FSharpFunc<t, R> Explicit<R, t>(R _arg1, Default1 _arg2) { return $Converter.Explicit@18<R, t>.@_instance; } public static FSharpFunc<t, R> Explicit$W<R, t>(FSharpFunc<t, R> op_Explicit, R _arg1, Default1 _arg2) { return new $Converter.Explicit@18-1<R, t>(op_Explicit); } public static void Explicit<t>(t _arg3, Default1 _arg4) where t : class { } public static FSharpFunc<a, byte> Explicit<a>(byte _arg5, Explicit _arg6) { return $Converter.Explicit@21-2<a>.@_instance; } public static FSharpFunc<a, byte> Explicit$W<a>(FSharpFunc<a, byte> op_Explicit, byte _arg5, Explicit _arg6) { return new $Converter.Explicit@21-3<a>(op_Explicit); } public static FSharpFunc<a, sbyte> Explicit<a>(sbyte _arg7, Explicit _arg8) { return $Converter.Explicit@22-4<a>.@_instance; } public static FSharpFunc<a, sbyte> Explicit$W<a>(FSharpFunc<a, sbyte> op_Explicit, sbyte _arg7, Explicit _arg8) { return new $Converter.Explicit@22-5<a>(op_Explicit); } public static FSharpFunc<a, short> Explicit<a>(short _arg9, Explicit _arg10) { return $Converter.Explicit@23-6<a>.@_instance; } public static FSharpFunc<a, short> Explicit$W<a>(FSharpFunc<a, short> op_Explicit, short _arg9, Explicit _arg10) { return new $Converter.Explicit@23-7<a>(op_Explicit); } public static FSharpFunc<a, ushort> Explicit<a>(ushort _arg11, Explicit _arg12) { return $Converter.Explicit@24-8<a>.@_instance; } public static FSharpFunc<a, ushort> Explicit$W<a>(FSharpFunc<a, ushort> op_Explicit, ushort _arg11, Explicit _arg12) { return new $Converter.Explicit@24-9<a>(op_Explicit); } public static FSharpFunc<a, int> Explicit<a>(int _arg13, Explicit _arg14) { return $Converter.Explicit@25-10<a>.@_instance; } public static FSharpFunc<a, int> Explicit$W<a>(FSharpFunc<a, int> op_Explicit, int _arg13, Explicit _arg14) { return new $Converter.Explicit@25-11<a>(op_Explicit); } public static FSharpFunc<a, uint> Explicit<a>(uint _arg15, Explicit _arg16) { return $Converter.Explicit@26-12<a>.@_instance; } public static FSharpFunc<a, uint> Explicit$W<a>(FSharpFunc<a, uint> op_Explicit, uint _arg15, Explicit _arg16) { return new $Converter.Explicit@26-13<a>(op_Explicit); } public static FSharpFunc<a, long> Explicit<a>(long _arg17, Explicit _arg18) { return $Converter.Explicit@27-14<a>.@_instance; } public static FSharpFunc<a, long> Explicit$W<a>(FSharpFunc<a, long> op_Explicit, long _arg17, Explicit _arg18) { return new $Converter.Explicit@27-15<a>(op_Explicit); } public static FSharpFunc<a, ulong> Explicit<a>(ulong _arg19, Explicit _arg20) { return $Converter.Explicit@28-16<a>.@_instance; } public static FSharpFunc<a, ulong> Explicit$W<a>(FSharpFunc<a, ulong> op_Explicit, ulong _arg19, Explicit _arg20) { return new $Converter.Explicit@28-17<a>(op_Explicit); } public static FSharpFunc<a, IntPtr> Explicit<a>(IntPtr _arg21, Explicit _arg22) { return $Converter.Explicit@30-18<a>.@_instance; } public static FSharpFunc<a, IntPtr> Explicit$W<a>(FSharpFunc<a, int> op_Explicit, IntPtr _arg21, Explicit _arg22) { return new $Converter.Explicit@30-19<a>(op_Explicit); } public static FSharpFunc<a, UIntPtr> Explicit<a>(UIntPtr _arg23, Explicit _arg24) { return $Converter.Explicit@31-20<a>.@_instance; } public static FSharpFunc<a, UIntPtr> Explicit$W<a>(FSharpFunc<a, uint> op_Explicit, UIntPtr _arg23, Explicit _arg24) { return new $Converter.Explicit@31-21<a>(op_Explicit); } public static FSharpFunc<a, double> Explicit<a>(double _arg25, Explicit _arg26) { return $Converter.Explicit@33-22<a>.@_instance; } public static FSharpFunc<a, double> Explicit$W<a>(FSharpFunc<a, double> op_Explicit, double _arg25, Explicit _arg26) { return new $Converter.Explicit@33-23<a>(op_Explicit); } public static FSharpFunc<a, float> Explicit<a>(float _arg27, Explicit _arg28) { return $Converter.Explicit@34-24<a>.@_instance; } public static FSharpFunc<a, float> Explicit$W<a>(FSharpFunc<a, float> op_Explicit, float _arg27, Explicit _arg28) { return new $Converter.Explicit@34-25<a>(op_Explicit); } public static FSharpFunc<a, decimal> Explicit<a>(decimal _arg29, Explicit _arg30) { return $Converter.Explicit@35-26<a>.@_instance; } public static FSharpFunc<a, decimal> Explicit$W<a>(FSharpFunc<a, decimal> op_Explicit, decimal _arg29, Explicit _arg30) { return new $Converter.Explicit@35-27<a>(op_Explicit); } public static FSharpFunc<a, char> Explicit<a>(char _arg31, Explicit _arg32) { return $Converter.Explicit@36-28<a>.@_instance; } public static FSharpFunc<a, char> Explicit$W<a>(FSharpFunc<a, char> op_Explicit, char _arg31, Explicit _arg32) { return new $Converter.Explicit@36-29<a>(op_Explicit); } public static T Invoke<a, T>(a value) { Explicit item = null; return FSharpFunc<Tuple<FSharpPlus.Control.Explicit, ?>, T>.InvokeFast<T>((FSharpFunc<Tuple<Explicit, ?>, FSharpFunc<T, T>>)(object)$Converter.Invoke@40<a, T>.@_instance, (Tuple<Explicit, ?>)(object)new Tuple<Explicit, T>(item, default(T)), (T)value); } public static T Invoke$W<a, T>(FSharpFunc<T, FSharpFunc<Explicit, FSharpFunc<a, T>>> @explicit, a value) { Explicit item = null; return FSharpFunc<Tuple<FSharpPlus.Control.Explicit, ?>, T>.InvokeFast<T>((FSharpFunc<Tuple<Explicit, ?>, FSharpFunc<T, T>>)(object)new $Converter.Invoke@40-1<a, T>(@explicit), (Tuple<Explicit, ?>)(object)new Tuple<Explicit, T>(item, default(T)), (T)value); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class OfBytes { public static FSharpFunc<Tuple<byte[], int, a>, bool> OfBytes<a>(bool _arg1, OfBytes _arg2) { return $Converter.OfBytes@43<a>.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, char> OfBytes(char _arg3, OfBytes _arg4) { return $Converter.OfBytes@45-1.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, double> OfBytes(double _arg5, OfBytes _arg6) { return $Converter.OfBytes@46-2.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, short> OfBytes(short _arg7, OfBytes _arg8) { return $Converter.OfBytes@47-3.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, int> OfBytes(int _arg9, OfBytes _arg10) { return $Converter.OfBytes@48-4.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, long> OfBytes(long _arg11, OfBytes _arg12) { return $Converter.OfBytes@49-5.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, float> OfBytes(float _arg13, OfBytes _arg14) { return $Converter.OfBytes@50-6.@_instance; } public static FSharpFunc<Tuple<byte[], int, b>, string> OfBytes<b>(string _arg15, OfBytes _arg16) { return $Converter.OfBytes@52-7<b>.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, Guid> OfBytes(Guid _arg17, OfBytes _arg18) { return $Converter.OfBytes@53-8.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, ushort> OfBytes(ushort _arg19, OfBytes _arg20) { return $Converter.OfBytes@55-9.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, uint> OfBytes(uint _arg21, OfBytes _arg22) { return $Converter.OfBytes@56-10.@_instance; } public static FSharpFunc<Tuple<byte[], int, bool>, ulong> OfBytes(ulong _arg23, OfBytes _arg24) { return $Converter.OfBytes@57-11.@_instance; } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static a Invoke<a>(bool isLtEndian, int startIndex, byte[] value) { OfBytes item = null; Tuple<byte[], int, bool> tuple = new Tuple<byte[], int, bool>(value, startIndex, isLtEndian); return FSharpFunc<Tuple<FSharpPlus.Control.OfBytes, a>, Tuple<byte[], int, bool>>.InvokeFast<a>((FSharpFunc<Tuple<OfBytes, a>, FSharpFunc<Tuple<byte[], int, bool>, a>>)$Converter.Invoke@62-2<a>.@_instance, new Tuple<OfBytes, a>(item, default(a)), tuple); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static a Invoke$W<a>(FSharpFunc<a, FSharpFunc<OfBytes, FSharpFunc<Tuple<byte[], int, bool>, a>>> ofBytes, bool isLtEndian, int startIndex, byte[] value) { OfBytes item = null; Tuple<byte[], int, bool> tuple = new Tuple<byte[], int, bool>(value, startIndex, isLtEndian); return FSharpFunc<Tuple<FSharpPlus.Control.OfBytes, a>, Tuple<byte[], int, bool>>.InvokeFast<a>((FSharpFunc<Tuple<OfBytes, a>, FSharpFunc<Tuple<byte[], int, bool>, a>>)new $Converter.Invoke@62-3<a>(ofBytes), new Tuple<OfBytes, a>(item, default(a)), tuple); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class ToBytes { public static byte[] ToBytes<a>(bool x, a _arg1, ToBytes _arg2) { return new byte[1] { (byte)(x ? 1 : 0) }; } public static byte[] ToBytes(char x, bool e, ToBytes _arg3) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; return FSharpPlus.Internals.BitConverter.GetBytes((short)x, isLittleEndian); } public unsafe static byte[] ToBytes(double x, bool e, ToBytes _arg4) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; double num = x; return FSharpPlus.Internals.BitConverter.GetBytes(*(long*)(&num), isLittleEndian); } public static byte[] ToBytes(short x, bool e, ToBytes _arg5) { return FSharpPlus.Internals.BitConverter.GetBytes(x, System.BitConverter.IsLittleEndian == e); } public static byte[] ToBytes(int x, bool e, ToBytes _arg6) { return FSharpPlus.Internals.BitConverter.GetBytes(x, System.BitConverter.IsLittleEndian == e); } public static byte[] ToBytes(long x, bool e, ToBytes _arg7) { return FSharpPlus.Internals.BitConverter.GetBytes(x, System.BitConverter.IsLittleEndian == e); } public unsafe static byte[] ToBytes(float x, bool e, ToBytes _arg8) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; float num = x; return FSharpPlus.Internals.BitConverter.GetBytes(*(int*)(&num), isLittleEndian); } public static byte[] ToBytes<b>(string x, b _arg9, ToBytes _arg10) { char[] array = x.ToCharArray(); if (array == null) { throw new ArgumentNullException("array"); } byte[] array2 = new byte[array.Length]; for (int i = 0; i < array2.Length; i++) { array2[i] = (byte)array[i]; } return array2; } public static byte[] ToBytes(Guid x, bool e, ToBytes _arg11) { return FSharpPlus.Internals.BitConverter.GetBytes(x, System.BitConverter.IsLittleEndian == e); } public static byte[] ToBytes(ushort x, bool e, ToBytes _arg12) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; return FSharpPlus.Internals.BitConverter.GetBytes((short)x, isLittleEndian); } public static byte[] ToBytes(uint x, bool e, ToBytes _arg13) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; return FSharpPlus.Internals.BitConverter.GetBytes((int)x, isLittleEndian); } public static byte[] ToBytes(ulong x, bool e, ToBytes _arg14) { bool isLittleEndian = System.BitConverter.IsLittleEndian == e; return FSharpPlus.Internals.BitConverter.GetBytes((long)x, isLittleEndian); } [CompilationArgumentCounts(new int[] { 1, 1 })] public static byte[] Invoke<a>(bool isLittleEndian, a value) { throw new NotSupportedException("Dynamic invocation of ToBytes is not supported"); } [CompilationArgumentCounts(new int[] { 1, 1 })] public static byte[] Invoke$W<a>(FSharpFunc<a, FSharpFunc<bool, FSharpFunc<ToBytes, byte[]>>> toBytes, bool isLittleEndian, a value) { return FSharpFunc<FSharpPlus.Control.ToBytes, bool>.InvokeFast<ToBytes, byte[]>((FSharpFunc<ToBytes, FSharpFunc<bool, FSharpFunc<ToBytes, byte[]>>>)(object)toBytes, (ToBytes)value, isLittleEndian, (ToBytes)null); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class TryParse : Default1 { public static FSharpFunc<string, FSharpOption<decimal>> TryParse(decimal _arg1, TryParse _arg2) { return $Converter.TryParse@90.@_instance; } public static FSharpFunc<string, FSharpOption<float>> TryParse(float _arg3, TryParse _arg4) { return $Converter.TryParse@91-1.@_instance; } public static FSharpFunc<string, FSharpOption<double>> TryParse(double _arg5, TryParse _arg6) { return $Converter.TryParse@92-2.@_instance; } public static FSharpFunc<string, FSharpOption<ushort>> TryParse(ushort _arg7, TryParse _arg8) { return $Converter.TryParse@93-3.@_instance; } public static FSharpFunc<string, FSharpOption<uint>> TryParse(uint _arg9, TryParse _arg10) { return $Converter.TryParse@94-4.@_instance; } public static FSharpFunc<string, FSharpOption<ulong>> TryParse(ulong _arg11, TryParse _arg12) { return $Converter.TryParse@95-5.@_instance; } public static FSharpFunc<string, FSharpOption<short>> TryParse(short _arg13, TryParse _arg14) { return $Converter.TryParse@96-6.@_instance; } public static FSharpFunc<string, FSharpOption<int>> TryParse(int _arg15, TryParse _arg16) { return $Converter.TryParse@97-7.@_instance; } public static FSharpFunc<string, FSharpOption<long>> TryParse(long _arg17, TryParse _arg18) { return $Converter.TryParse@98-8.@_instance; } public static FSharpFunc<string, FSharpOption<string>> TryParse(string _arg19, TryParse _arg20) { return $Converter.TryParse@111-9.@_instance; } public static FSharpFunc<string, FSharpOption<StringBuilder>> TryParse(StringBuilder _arg21, TryParse _arg22) { return $Converter.TryParse@112-10.@_instance; } public static FSharpFunc<string, FSharpOption<DateTime>> TryParse(DateTime _arg23, TryParse _arg24) { return $Converter.TryParse@115-11.@_instance; } public static FSharpFunc<string, FSharpOption<DateTimeOffset>> TryParse(DateTimeOffset _arg25, TryParse _arg26) { return $Converter.TryParse@123-12.@_instance; } public static FSharpOption<b> Invoke<b>(string value) { TryParse item = null; return FSharpFunc<Tuple<FSharpPlus.Control.TryParse, FSharpOption<b>>, string>.InvokeFast<FSharpOption<b>>((FSharpFunc<Tuple<TryParse, FSharpOption<b>>, FSharpFunc<string, FSharpOption<b>>>)(object)$Converter.Invoke@135-4<b>.@_instance, (Tuple<TryParse, FSharpOption<b>>)(object)new Tuple<TryParse, b>(item, default(b)), value); } public static FSharpOption<b> Invoke$W<b>(FSharpFunc<b, FSharpFunc<TryParse, FSharpFunc<string, FSharpOption<b>>>> tryParse, string value) { TryParse item = null; return FSharpFunc<Tuple<FSharpPlus.Control.TryParse, FSharpOption<b>>, string>.InvokeFast<FSharpOption<b>>((FSharpFunc<Tuple<TryParse, FSharpOption<b>>, FSharpFunc<string, FSharpOption<b>>>)(object)new $Converter.Invoke@135-5<b>(tryParse), (Tuple<TryParse, FSharpOption<b>>)(object)new Tuple<TryParse, b>(item, default(b)), value); } public static FSharpOption<R> InvokeOnInstance<R>(string value) { throw new NotSupportedException("Dynamic invocation of TryParse is not supported"); } public static FSharpOption<R> InvokeOnInstance$W<R>(FSharpFunc<string, FSharpOption<R>> tryParse, string value) { return tryParse.Invoke(value); } public static FSharpOption<R> InvokeOnConvention<R, a>(string value) { R val = default(R); if (0 == 0) { throw new NotSupportedException("Dynamic invocation of TryParse is not supported"); } if ((bool)(object)null) { return FSharpOption<R>.Some(val); } return null; } public unsafe static FSharpOption<R> InvokeOnConvention$W<R, a>(FSharpFunc<string, FSharpFunc<ref R, bool>> tryParse, string value) { R val = default(R); if (FSharpFunc<string, ref bool>.InvokeFast<bool>((FSharpFunc<string, FSharpFunc<ref bool, bool>>)(object)tryParse, value, ref *(bool*)(&val))) { return FSharpOption<R>.Some(val); } return null; } public static FSharpFunc<string, FSharpOption<R>> TryParse<R>(R _arg1, Default4 _arg2) { return $Converter.TryParse@211-13<R>.@_instance; } public static FSharpFunc<string, FSharpOption<R>> TryParse$W<R>(FSharpFunc<string, R> parse, R _arg1, Default4 _arg2) { return new $Converter.TryParse@211-14<R>(parse); } public static FSharpFunc<string, FSharpOption<R>> TryParse<R, a>(R _arg3, Default3 _arg4) { return $Converter.TryParse@216-15<R, a>.@_instance; } public static FSharpFunc<string, FSharpOption<R>> TryParse$W<R, a>(FSharpFunc<string, FSharpFunc<ref R, bool>> tryParse, R _arg3, Default3 _arg4) { return new $Converter.TryParse@216-16<R, a>(tryParse); } public static FSharpFunc<string, FSharpOption<R>> TryParse<R>(R _arg5, Default2 _arg6) { return $Converter.TryParse@218-17<R>.@_instance; } public static FSharpFunc<string, FSharpOption<R>> TryParse$W<R>(FSharpFunc<string, FSharpOption<R>> tryParse, R _arg5, Default2 _arg6) { return new $Converter.TryParse@218-18<R>(tryParse); } public static FSharpFunc<a, a> TryParse<t, a>(t _arg7, Default2 _arg8) where t : class { return $Converter.TryParse@224-19<a>.@_instance; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Parse : Default1 { public static FSharpFunc<string, R> Parse<R>(R _arg1, Parse _arg2) { return $Converter.Parse@155<R>.@_instance; } public static FSharpFunc<string, R> Parse$W<R>(FSharpFunc<string, FSharpFunc<CultureInfo, R>> parse, R _arg1, Parse _arg2) { return new $Converter.Parse@155-1<R>(parse); } public static FSharpFunc<string, @enum> Parse<T, a, @enum>(T _arg3, Parse _arg4) where @enum : struct { return $Converter.Parse@157-2<@enum>.@_instance; } public static FSharpFunc<string, DateTime> Parse(DateTime _arg5, Parse _arg6) { return $Converter.Parse@164-3.@_instance; } public static FSharpFunc<string, DateTimeOffset> Parse(DateTimeOffset _arg7, Parse _arg8) { return $Converter.Parse@169-4.@_instance; } public static FSharpFunc<string, bool> Parse(bool _arg9, Parse _arg10) { return $Converter.Parse@174-5.@_instance; } public static FSharpFunc<string, char> Parse(char _arg11, Parse _arg12) { return $Converter.Parse@176-6.@_instance; } public static FSharpFunc<string, string> Parse(string _arg13, Parse _arg14) { return $Converter.Parse@177-7.@_instance; } public static FSharpFunc<string, StringBuilder> Parse(StringBuilder _arg15, Parse _arg16) { return $Converter.Parse@178-8.@_instance; } public static a Invoke<a>(string value) { Parse item = null; return FSharpFunc<Tuple<FSharpPlus.Control.Parse, a>, string>.InvokeFast<a>((FSharpFunc<Tuple<Parse, a>, FSharpFunc<string, a>>)$Converter.Invoke@183-6<a>.@_instance, new Tuple<Parse, a>(item, default(a)), value); } public static a Invoke$W<a>(FSharpFunc<a, FSharpFunc<Parse, FSharpFunc<string, a>>> parse, string value) { Parse item = null; return FSharpFunc<Tuple<FSharpPlus.Control.Parse, a>, string>.InvokeFast<a>((FSharpFunc<Tuple<Parse, a>, FSharpFunc<string, a>>)new $Converter.Invoke@183-7<a>(parse), new Tuple<Parse, a>(item, default(a)), value); } public static R InvokeOnInstance<R>(string value) { throw new NotSupportedException("Dynamic invocation of Parse is not supported"); } public static R InvokeOnInstance$W<R>(FSharpFunc<string, R> parse, string value) { return parse.Invoke(value); } public static FSharpFunc<string, R> Parse<R, a>(R _arg1, Default4 _arg2) { return $Converter.Parse@190-9<R, a>.@_instance; } public static FSharpFunc<string, R> Parse$W<R, a>(FSharpFunc<string, FSharpFunc<ref R, bool>> tryParse, R _arg1, Default4 _arg2) { return new $Converter.Parse@190-10<R, a>(tryParse); } public static FSharpFunc<string, R> Parse<R>(R _arg3, Default3 _arg4) { return $Converter.Parse@195-11<R>.@_instance; } public static FSharpFunc<string, R> Parse$W<R>(FSharpFunc<string, FSharpOption<R>> tryParse, R _arg3, Default3 _arg4) { return new $Converter.Parse@195-12<R>(tryParse); } public static FSharpFunc<string, R> Parse<R>(R _arg5, Default2 _arg6) { return $Converter.Parse@200-13<R>.@_instance; } public static FSharpFunc<string, R> Parse$W<R>(FSharpFunc<string, R> parse, R _arg5, Default2 _arg6) { return new $Converter.Parse@200-14<R>(parse); } public static FSharpFunc<a, a> Parse<t, a>(t _arg7, Default2 _arg8) where t : class { return $Converter.Parse@206-15<a>.@_instance; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class FromBigInt : Default1 { public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt<R>(R _arg1, Default4 _arg2) { return $Numeric.FromBigInt@19<R>.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt$W<R>(FSharpFunc<R, FSharpFunc<Explicit, FSharpFunc<System.Numerics.BigInteger, R>>> @explicit, R _arg1, Default4 _arg2) { return new $Numeric.FromBigInt@19-2<R>(@explicit); } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt<R>(R _arg3, Default3 _arg4) { return $Numeric.FromBigInt@20-4<R>.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt$W<R>(FSharpFunc<long, R> op_Implicit, R _arg3, Default3 _arg4) { return new $Numeric.FromBigInt@20-5<R>(op_Implicit); } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt<R>(R _arg5, Default2 _arg6) { return $Numeric.FromBigInt@21-6<R>.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt$W<R>(FSharpFunc<System.Numerics.BigInteger, R> op_Implicit, R _arg5, Default2 _arg6) { return new $Numeric.FromBigInt@21-7<R>(op_Implicit); } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt<R>(R _arg7, Default1 _arg8) { return $Numeric.FromBigInt@22-8<R>.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt$W<R>(FSharpFunc<System.Numerics.BigInteger, R> fromBigInt, R _arg7, Default1 _arg8) { return new $Numeric.FromBigInt@22-9<R>(fromBigInt); } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt<R>(Default1 _arg9, Default1 _arg10) { return $Numeric.FromBigInt@23-10<R>.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, R> FromBigInt$W<R>(FSharpFunc<System.Numerics.BigInteger, R> fromBigInt, Default1 _arg9, Default1 _arg10) { return new $Numeric.FromBigInt@23-11<R>(fromBigInt); } public static FSharpFunc<System.Numerics.BigInteger, int> FromBigInt(int _arg11, FromBigInt _arg12) { return $Numeric.FromBigInt@24-12.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, long> FromBigInt(long _arg13, FromBigInt _arg14) { return $Numeric.FromBigInt@25-13.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, IntPtr> FromBigInt(IntPtr _arg15, FromBigInt _arg16) { return $Numeric.FromBigInt@26-14.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, UIntPtr> FromBigInt(UIntPtr _arg17, FromBigInt _arg18) { return $Numeric.FromBigInt@27-15.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, System.Numerics.BigInteger> FromBigInt(System.Numerics.BigInteger _arg19, FromBigInt _arg20) { return $Numeric.FromBigInt@28-16.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, double> FromBigInt(double _arg21, FromBigInt _arg22) { return $Numeric.FromBigInt@29-17.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, sbyte> FromBigInt(sbyte _arg23, FromBigInt _arg24) { return $Numeric.FromBigInt@30-18.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, short> FromBigInt(short _arg25, FromBigInt _arg26) { return $Numeric.FromBigInt@31-19.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, byte> FromBigInt(byte _arg27, FromBigInt _arg28) { return $Numeric.FromBigInt@32-20.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, ushort> FromBigInt(ushort _arg29, FromBigInt _arg30) { return $Numeric.FromBigInt@33-21.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, uint> FromBigInt(uint _arg31, FromBigInt _arg32) { return $Numeric.FromBigInt@34-22.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, ulong> FromBigInt(ulong _arg33, FromBigInt _arg34) { return $Numeric.FromBigInt@35-23.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, float> FromBigInt(float _arg35, FromBigInt _arg36) { return $Numeric.FromBigInt@36-24.@_instance; } public static FSharpFunc<System.Numerics.BigInteger, decimal> FromBigInt(decimal _arg37, FromBigInt _arg38) { return $Numeric.FromBigInt@37-25.@_instance; } public static Num Invoke<Num>(System.Numerics.BigInteger x) { FromBigInt item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromBigInt, Num>, System.Numerics.BigInteger>.InvokeFast<Num>((FSharpFunc<Tuple<FromBigInt, Num>, FSharpFunc<System.Numerics.BigInteger, Num>>)$Numeric.Invoke@42-8<Num>.@_instance, new Tuple<FromBigInt, Num>(item, default(Num)), x); } public static Num Invoke$W<Num>(FSharpFunc<Num, FSharpFunc<FromBigInt, FSharpFunc<System.Numerics.BigInteger, Num>>> fromBigInt, System.Numerics.BigInteger x) { FromBigInt item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromBigInt, Num>, System.Numerics.BigInteger>.InvokeFast<Num>((FSharpFunc<Tuple<FromBigInt, Num>, FSharpFunc<System.Numerics.BigInteger, Num>>)new $Numeric.Invoke@42-9<Num>(fromBigInt), new Tuple<FromBigInt, Num>(item, default(Num)), x); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class FromInt64 : Default1 { public static FSharpFunc<long, R> FromInt64<R>(R _arg1, Default4 _arg2) { return $Numeric.FromInt64@49<R>.@_instance; } public static FSharpFunc<long, R> FromInt64$W<R>(FSharpFunc<R, FSharpFunc<Explicit, FSharpFunc<long, R>>> @explicit, R _arg1, Default4 _arg2) { return new $Numeric.FromInt64@49-2<R>(@explicit); } public static FSharpFunc<long, R> FromInt64<R>(R _arg3, Default3 _arg4) { return $Numeric.FromInt64@51-4<R>.@_instance; } public static FSharpFunc<long, R> FromInt64$W<R>(FSharpFunc<R, FSharpFunc<FromBigInt, FSharpFunc<System.Numerics.BigInteger, R>>> fromBigInt, R _arg3, Default3 _arg4) { return new $Numeric.FromInt64@51-6<R>(fromBigInt); } public static FSharpFunc<long, R> FromInt64<R>(R _arg5, Default2 _arg6) { return $Numeric.FromInt64@53-8<R>.@_instance; } public static FSharpFunc<long, R> FromInt64$W<R>(FSharpFunc<long, R> op_Implicit, R _arg5, Default2 _arg6) { return new $Numeric.FromInt64@53-9<R>(op_Implicit); } public static FSharpFunc<long, R> FromInt64<R>(R _arg7, Default1 _arg8) { return $Numeric.FromInt64@54-10<R>.@_instance; } public static FSharpFunc<long, R> FromInt64$W<R>(FSharpFunc<long, R> fromInt64, R _arg7, Default1 _arg8) { return new $Numeric.FromInt64@54-11<R>(fromInt64); } public static FSharpFunc<long, R> FromInt64<R>(Default1 _arg9, Default1 _arg10) { return $Numeric.FromInt64@55-12<R>.@_instance; } public static FSharpFunc<long, R> FromInt64$W<R>(FSharpFunc<long, R> fromInt64, Default1 _arg9, Default1 _arg10) { return new $Numeric.FromInt64@55-13<R>(fromInt64); } public static FSharpFunc<long, int> FromInt64(int _arg11, FromInt64 _arg12) { return $Numeric.FromInt64@56-14.@_instance; } public static FSharpFunc<long, long> FromInt64(long _arg13, FromInt64 _arg14) { return $Numeric.FromInt64@57-15.@_instance; } public static FSharpFunc<long, IntPtr> FromInt64(IntPtr _arg15, FromInt64 _arg16) { return $Numeric.FromInt64@59-16.@_instance; } public static FSharpFunc<long, UIntPtr> FromInt64(UIntPtr _arg17, FromInt64 _arg18) { return $Numeric.FromInt64@60-17.@_instance; } public static FSharpFunc<long, System.Numerics.BigInteger> FromInt64(System.Numerics.BigInteger _arg19, FromInt64 _arg20) { return $Numeric.FromInt64@61-18.@_instance; } public static FSharpFunc<long, double> FromInt64(double _arg21, FromInt64 _arg22) { return $Numeric.FromInt64@63-19.@_instance; } public static FSharpFunc<long, float> FromInt64(float _arg23, FromInt64 _arg24) { return $Numeric.FromInt64@64-20.@_instance; } public static FSharpFunc<long, decimal> FromInt64(decimal _arg25, FromInt64 _arg26) { return $Numeric.FromInt64@65-21.@_instance; } public static FSharpFunc<long, sbyte> FromInt64(sbyte _arg27, FromInt64 _arg28) { return $Numeric.FromInt64@66-22.@_instance; } public static FSharpFunc<long, short> FromInt64(short _arg29, FromInt64 _arg30) { return $Numeric.FromInt64@67-23.@_instance; } public static FSharpFunc<long, byte> FromInt64(byte _arg31, FromInt64 _arg32) { return $Numeric.FromInt64@68-24.@_instance; } public static FSharpFunc<long, ushort> FromInt64(ushort _arg33, FromInt64 _arg34) { return $Numeric.FromInt64@69-25.@_instance; } public static FSharpFunc<long, uint> FromInt64(uint _arg35, FromInt64 _arg36) { return $Numeric.FromInt64@70-26.@_instance; } public static FSharpFunc<long, ulong> FromInt64(ulong _arg37, FromInt64 _arg38) { return $Numeric.FromInt64@71-27.@_instance; } public static Num Invoke<Num>(long x) { FromInt64 item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromInt64, Num>, long>.InvokeFast<Num>((FSharpFunc<Tuple<FromInt64, Num>, FSharpFunc<long, Num>>)$Numeric.Invoke@76-10<Num>.@_instance, new Tuple<FromInt64, Num>(item, default(Num)), x); } public static Num Invoke$W<Num>(FSharpFunc<Num, FSharpFunc<FromInt64, FSharpFunc<long, Num>>> fromInt64, long x) { FromInt64 item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromInt64, Num>, long>.InvokeFast<Num>((FSharpFunc<Tuple<FromInt64, Num>, FSharpFunc<long, Num>>)new $Numeric.Invoke@76-11<Num>(fromInt64), new Tuple<FromInt64, Num>(item, default(Num)), x); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class FromInt32 : Default1 { public static FSharpFunc<int, R> FromInt32<R>(R _arg1, Default4 _arg2) { return $Numeric.FromInt32@81<R>.@_instance; } public static FSharpFunc<int, R> FromInt32$W<R>(FSharpFunc<R, FSharpFunc<Explicit, FSharpFunc<int, R>>> @explicit, R _arg1, Default4 _arg2) { return new $Numeric.FromInt32@81-2<R>(@explicit); } public static FSharpFunc<int, R> FromInt32<R>(R _arg3, Default3 _arg4) { return $Numeric.FromInt32@82-4<R>.@_instance; } public static FSharpFunc<int, R> FromInt32$W<R>(FSharpFunc<R, FSharpFunc<FromInt64, FSharpFunc<long, R>>> fromInt64, R _arg3, Default3 _arg4) { return new $Numeric.FromInt32@82-6<R>(fromInt64); } public static FSharpFunc<int, R> FromInt32<R>(R _arg5, Default2 _arg6) { return $Numeric.FromInt32@83-8<R>.@_instance; } public static FSharpFunc<int, R> FromInt32$W<R>(FSharpFunc<int, R> op_Implicit, R _arg5, Default2 _arg6) { return new $Numeric.FromInt32@83-9<R>(op_Implicit); } public static FSharpFunc<int, R> FromInt32<R>(R _arg7, Default1 _arg8) { return $Numeric.FromInt32@84-10<R>.@_instance; } public static FSharpFunc<int, R> FromInt32$W<R>(FSharpFunc<int, R> fromInt32, R _arg7, Default1 _arg8) { return new $Numeric.FromInt32@84-11<R>(fromInt32); } public static FSharpFunc<int, R> FromInt32<R>(Default1 _arg9, Default1 _arg10) { return $Numeric.FromInt32@85-12<R>.@_instance; } public static FSharpFunc<int, R> FromInt32$W<R>(FSharpFunc<int, R> fromInt32, Default1 _arg9, Default1 _arg10) { return new $Numeric.FromInt32@85-13<R>(fromInt32); } public static FSharpFunc<int, int> FromInt32(int _arg11, FromInt32 _arg12) { return $Numeric.FromInt32@86-14.@_instance; } public static FSharpFunc<int, long> FromInt32(long _arg13, FromInt32 _arg14) { return $Numeric.FromInt32@87-15.@_instance; } public static FSharpFunc<int, IntPtr> FromInt32(IntPtr _arg15, FromInt32 _arg16) { return $Numeric.FromInt32@89-16.@_instance; } public static FSharpFunc<int, UIntPtr> FromInt32(UIntPtr _arg17, FromInt32 _arg18) { return $Numeric.FromInt32@90-17.@_instance; } public static FSharpFunc<int, System.Numerics.BigInteger> FromInt32(System.Numerics.BigInteger _arg19, FromInt32 _arg20) { return $Numeric.FromInt32@91-18.@_instance; } public static FSharpFunc<int, double> FromInt32(double _arg21, FromInt32 _arg22) { return $Numeric.FromInt32@93-19.@_instance; } public static FSharpFunc<int, sbyte> FromInt32(sbyte _arg23, FromInt32 _arg24) { return $Numeric.FromInt32@94-20.@_instance; } public static FSharpFunc<int, short> FromInt32(short _arg25, FromInt32 _arg26) { return $Numeric.FromInt32@95-21.@_instance; } public static FSharpFunc<int, byte> FromInt32(byte _arg27, FromInt32 _arg28) { return $Numeric.FromInt32@96-22.@_instance; } public static FSharpFunc<int, ushort> FromInt32(ushort _arg29, FromInt32 _arg30) { return $Numeric.FromInt32@97-23.@_instance; } public static FSharpFunc<int, uint> FromInt32(uint _arg31, FromInt32 _arg32) { return $Numeric.FromInt32@98-24.@_instance; } public static FSharpFunc<int, ulong> FromInt32(ulong _arg33, FromInt32 _arg34) { return $Numeric.FromInt32@99-25.@_instance; } public static FSharpFunc<int, float> FromInt32(float _arg35, FromInt32 _arg36) { return $Numeric.FromInt32@100-26.@_instance; } public static FSharpFunc<int, decimal> FromInt32(decimal _arg37, FromInt32 _arg38) { return $Numeric.FromInt32@101-27.@_instance; } public static Num Invoke<Num>(int x) { FromInt32 item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromInt32, Num>, int>.InvokeFast<Num>((FSharpFunc<Tuple<FromInt32, Num>, FSharpFunc<int, Num>>)$Numeric.Invoke@106-12<Num>.@_instance, new Tuple<FromInt32, Num>(item, default(Num)), x); } public static Num Invoke$W<Num>(FSharpFunc<Num, FSharpFunc<FromInt32, FSharpFunc<int, Num>>> fromInt32, int x) { FromInt32 item = null; return FSharpFunc<Tuple<FSharpPlus.Control.FromInt32, Num>, int>.InvokeFast<Num>((FSharpFunc<Tuple<FromInt32, Num>, FSharpFunc<int, Num>>)new $Numeric.Invoke@106-13<Num>(fromInt32), new Tuple<FromInt32, Num>(item, default(Num)), x); } public static Num InvokeOnInstance<Num>(int x) { throw new NotSupportedException("Dynamic invocation of FromInt32 is not supported"); } public static Num InvokeOnInstance$W<Num>(FSharpFunc<int, Num> fromInt32, int x) { return fromInt32.Invoke(x); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class One : Default1 { public static t One<t>(t _arg1, Default1 _arg2) { FromInt32 item = null; return FSharpFunc<Tuple<FromInt32, t>, int>.InvokeFast<t>((FSharpFunc<Tuple<FromInt32, t>, FSharpFunc<int, t>>)$Numeric.One@115<t>.@_instance, new Tuple<FromInt32, t>(item, default(t)), 1); } public static t One$W<t>(FSharpFunc<t, FSharpFunc<FromInt32, FSharpFunc<int, t>>> fromInt32, t _arg1, Default1 _arg2) { FromInt32 item = null; return FSharpFunc<Tuple<FromInt32, t>, int>.InvokeFast<t>((FSharpFunc<Tuple<FromInt32, t>, FSharpFunc<int, t>>)new $Numeric.One@115-1<t>(fromInt32), new Tuple<FromInt32, t>(item, default(t)), 1); } public static t One<t>(t _arg3, One _arg4) { return LanguagePrimitives.GenericOneDynamic<t>(); } public static t One$W<t>(FSharpFunc<Unit, t> get_One, t _arg3, One _arg4) { return get_One.Invoke((Unit)null); } public static FSharpFunc<a, a> One<t, a>(t _arg5, One _arg6) where t : class { return $Numeric.One@117-2<a>.@_instance; } public static Num Invoke<Num>() { One one = null; throw new NotSupportedException("Dynamic invocation of One is not supported"); } public static Num Invoke$W<Num>(FSharpFunc<Num, FSharpFunc<One, Num>> one) { One one2 = null; return FSharpFunc<Num, FSharpPlus.Control.One>.InvokeFast<Num>(one, default(Num), one2); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Zero : Default1 { public static TimeSpan Zero(TimeSpan _arg1, Zero _arg2) { return default(TimeSpan); } public static DmStruct Zero(DmStruct _arg3, Zero _arg4) { return default(DmStruct); } public static FSharpList<a> Zero<a>(FSharpList<a> _arg5, Zero _arg6) { return FSharpList<a>.Empty; } public static FSharpOption<a> Zero<a>(FSharpOption<a> _arg7, Zero _arg8) { return null; } public static FSharpValueOption<a> Zero<a>(FSharpValueOption<a> _arg9, Zero _arg10) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return FSharpValueOption<a>.ValueNone; } public static a[] Zero<a>(a[] _arg11, Zero _arg12) { return System.Array.Empty<a>(); } public static string Zero(string _arg13, Zero _arg14) { return ""; } public static StringBuilder Zero(StringBuilder _arg15, Zero _arg16) { return new StringBuilder(); } public static void Zero(Unit _arg17, Zero _arg18) { } public static bool Zero(bool _arg19, Zero _arg20) { return false; } public static FSharpSet<a> Zero<a>(FSharpSet<a> _arg21, Zero _arg22) { return SetModule.Empty<a>(); } public static FSharpMap<a, b> Zero<a, b>(FSharpMap<a, b> _arg23, Zero _arg24) { return MapModule.Empty<a, b>(); } public static a Invoke<a>() { Zero zero = null; throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static a Invoke$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero) { Zero zero2 = null; return FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); } public static t Zero<t, t1, t2, t3, t4, t5, t6, t7, tr>(t t, Zero _arg1) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } tr rest = (tr)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t7 item = (t7)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t6 item2 = (t6)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t5 item3 = (t5)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t4 item4 = (t4)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t3 item5 = (t3)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t2 item6 = (t2)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } t1 item7 = (t1)(object)null; return (t)new Tuple<t1, t2, t3, t4, t5, t6, t7, tr>(item7, item6, item5, item4, item3, item2, item, rest); } public static t Zero$W<t, t1, t2, t3, t4, t5, t6, t7, tr>(FSharpFunc<t1, FSharpFunc<Zero, t1>> zero, FSharpFunc<t2, FSharpFunc<Zero, t2>> zero1, FSharpFunc<t3, FSharpFunc<Zero, t3>> zero2, FSharpFunc<t4, FSharpFunc<Zero, t4>> zero3, FSharpFunc<t5, FSharpFunc<Zero, t5>> zero4, FSharpFunc<t6, FSharpFunc<Zero, t6>> zero5, FSharpFunc<t7, FSharpFunc<Zero, t7>> zero6, FSharpFunc<tr, FSharpFunc<Zero, tr>> zero7, FSharpFunc<t, t1> get_Item1, FSharpFunc<t, t2> get_Item2, FSharpFunc<t, t3> get_Item3, FSharpFunc<t, t4> get_Item4, FSharpFunc<t, t5> get_Item5, FSharpFunc<t, t6> get_Item6, FSharpFunc<t, t7> get_Item7, FSharpFunc<t, tr> get_Rest, t t, Zero _arg1) { Zero zero8 = null; tr rest = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<tr>((FSharpFunc<?, FSharpFunc<Zero, tr>>)(object)zero7, default(tr), zero8); zero8 = null; t7 item = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t7>((FSharpFunc<?, FSharpFunc<Zero, t7>>)(object)zero6, default(t7), zero8); zero8 = null; t6 item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t6>((FSharpFunc<?, FSharpFunc<Zero, t6>>)(object)zero5, default(t6), zero8); zero8 = null; t5 item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t5>((FSharpFunc<?, FSharpFunc<Zero, t5>>)(object)zero4, default(t5), zero8); zero8 = null; t4 item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t4>((FSharpFunc<?, FSharpFunc<Zero, t4>>)(object)zero3, default(t4), zero8); zero8 = null; t3 item5 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t3>((FSharpFunc<?, FSharpFunc<Zero, t3>>)(object)zero2, default(t3), zero8); zero8 = null; t2 item6 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t2>((FSharpFunc<?, FSharpFunc<Zero, t2>>)(object)zero1, default(t2), zero8); zero8 = null; t1 item7 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<t1>((FSharpFunc<?, FSharpFunc<Zero, t1>>)(object)zero, default(t1), zero8); return (t)new Tuple<t1, t2, t3, t4, t5, t6, t7, tr>(item7, item6, item5, item4, item3, item2, item, rest); } public static Tuple<a> Zero<a>(Tuple<a> _arg1, Zero _arg2) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a>((a)(object)null); } public static Tuple<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, Tuple<a> _arg1, Zero _arg2) { Zero zero2 = null; return new Tuple<a>(FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2)); } public static Id<a> Zero<a, a>(Id<a> _arg3, Zero _arg4) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Id<a>((a)(object)null); } public static Id<a> Zero$W<a, a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, Id<a> _arg3, Zero _arg4) { Zero zero2 = null; return new Id<a>(FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<a>((FSharpFunc<?, FSharpFunc<Zero, a>>)(object)zero, default(a), zero2)); } public static ValueTuple<a> Zero<a>(ValueTuple<a> _arg5, Zero _arg6) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new ValueTuple<a>((a)(object)null); } public static ValueTuple<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, ValueTuple<a> _arg5, Zero _arg6) { Zero zero2 = null; return new ValueTuple<a>(FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2)); } public static Tuple<a, b> Zero<a, b>(Tuple<a, b> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b>(item, (b)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b> Zero$W<a, b>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, Tuple<a, b> _arg1, Zero _arg2) { Zero zero2 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); zero2 = null; return new Tuple<a, b>(item, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero2)); } public static Tuple<a, b, c> Zero<a, b, c>(Tuple<a, b, c> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b, c>(item, item2, (c)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b, c> Zero$W<a, b, c>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, Tuple<a, b, c> _arg1, Zero _arg2) { Zero zero3 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero3); zero3 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero3); zero3 = null; return new Tuple<a, b, c>(item, item2, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero3)); } public static Tuple<a, b, c, d> Zero<a, b, c, d>(Tuple<a, b, c, d> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b, c, d>(item, item2, item3, (d)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b, c, d> Zero$W<a, b, c, d>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, Tuple<a, b, c, d> _arg1, Zero _arg2) { Zero zero4 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero4); zero4 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero4); zero4 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero4); zero4 = null; return new Tuple<a, b, c, d>(item, item2, item3, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero4)); } public static Tuple<a, b, c, d, e> Zero<a, b, c, d, e>(Tuple<a, b, c, d, e> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b, c, d, e>(item, item2, item3, item4, (e)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b, c, d, e> Zero$W<a, b, c, d, e>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, Tuple<a, b, c, d, e> _arg1, Zero _arg2) { Zero zero5 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero5); zero5 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero5); zero5 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero5); zero5 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero5); zero5 = null; return new Tuple<a, b, c, d, e>(item, item2, item3, item4, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero5)); } public static Tuple<a, b, c, d, e, f> Zero<a, b, c, d, e, f>(Tuple<a, b, c, d, e, f> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (false) { e item5 = (e)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b, c, d, e, f>(item, item2, item3, item4, item5, (f)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b, c, d, e, f> Zero$W<a, b, c, d, e, f>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, FSharpFunc<f, FSharpFunc<Zero, f>> zero5, Tuple<a, b, c, d, e, f> _arg1, Zero _arg2) { Zero zero6 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero6); zero6 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero6); zero6 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero6); zero6 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero6); zero6 = null; e item5 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero6); zero6 = null; return new Tuple<a, b, c, d, e, f>(item, item2, item3, item4, item5, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<f>((FSharpFunc<?, FSharpFunc<Zero, f>>)(object)zero5, default(f), zero6)); } public static Tuple<a, b, c, d, e, f, g> Zero<a, b, c, d, e, f, g>(Tuple<a, b, c, d, e, f, g> _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (false) { e item5 = (e)(object)null; zero = null; if (false) { f item6 = (f)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return new Tuple<a, b, c, d, e, f, g>(item, item2, item3, item4, item5, item6, (g)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static Tuple<a, b, c, d, e, f, g> Zero$W<a, b, c, d, e, f, g>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, FSharpFunc<f, FSharpFunc<Zero, f>> zero5, FSharpFunc<g, FSharpFunc<Zero, g>> zero6, Tuple<a, b, c, d, e, f, g> _arg1, Zero _arg2) { Zero zero7 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero7); zero7 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero7); zero7 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero7); zero7 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero7); zero7 = null; e item5 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero7); zero7 = null; f item6 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<f>((FSharpFunc<?, FSharpFunc<Zero, f>>)(object)zero5, default(f), zero7); zero7 = null; return new Tuple<a, b, c, d, e, f, g>(item, item2, item3, item4, item5, item6, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<g>((FSharpFunc<?, FSharpFunc<Zero, g>>)(object)zero6, default(g), zero7)); } public static (a, b) Zero<a, b>((a, b) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, (b)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b) Zero$W<a, b>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, (a, b) _arg1, Zero _arg2) { Zero zero2 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); zero2 = null; return ValueTuple.Create(item, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero2)); } public static (a, b, c) Zero<a, b, c>((a, b, c) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, item2, (c)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b, c) Zero$W<a, b, c>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, (a, b, c) _arg1, Zero _arg2) { Zero zero3 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero3); zero3 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero3); zero3 = null; return ValueTuple.Create(item, item2, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero3)); } public static (a, b, c, d) Zero<a, b, c, d>((a, b, c, d) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, item2, item3, (d)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b, c, d) Zero$W<a, b, c, d>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, (a, b, c, d) _arg1, Zero _arg2) { Zero zero4 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero4); zero4 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero4); zero4 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero4); zero4 = null; return ValueTuple.Create(item, item2, item3, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero4)); } public static (a, b, c, d, e) Zero<a, b, c, d, e>((a, b, c, d, e) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, item2, item3, item4, (e)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b, c, d, e) Zero$W<a, b, c, d, e>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, (a, b, c, d, e) _arg1, Zero _arg2) { Zero zero5 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero5); zero5 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero5); zero5 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero5); zero5 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero5); zero5 = null; return ValueTuple.Create(item, item2, item3, item4, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero5)); } public static (a, b, c, d, e, f) Zero<a, b, c, d, e, f>((a, b, c, d, e, f) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (false) { e item5 = (e)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, item2, item3, item4, item5, (f)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b, c, d, e, f) Zero$W<a, b, c, d, e, f>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, FSharpFunc<f, FSharpFunc<Zero, f>> zero5, (a, b, c, d, e, f) _arg1, Zero _arg2) { Zero zero6 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero6); zero6 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero6); zero6 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero6); zero6 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero6); zero6 = null; e item5 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero6); zero6 = null; return ValueTuple.Create(item, item2, item3, item4, item5, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<f>((FSharpFunc<?, FSharpFunc<Zero, f>>)(object)zero5, default(f), zero6)); } public static (a, b, c, d, e, f, g) Zero<a, b, c, d, e, f, g>((a, b, c, d, e, f, g) _arg1, Zero _arg2) { Zero zero = null; if (false) { a item = (a)(object)null; zero = null; if (false) { b item2 = (b)(object)null; zero = null; if (false) { c item3 = (c)(object)null; zero = null; if (false) { d item4 = (d)(object)null; zero = null; if (false) { e item5 = (e)(object)null; zero = null; if (false) { f item6 = (f)(object)null; zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } return ValueTuple.Create(item, item2, item3, item4, item5, item6, (g)(object)null); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } public static (a, b, c, d, e, f, g) Zero$W<a, b, c, d, e, f, g>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpFunc<b, FSharpFunc<Zero, b>> zero1, FSharpFunc<c, FSharpFunc<Zero, c>> zero2, FSharpFunc<d, FSharpFunc<Zero, d>> zero3, FSharpFunc<e, FSharpFunc<Zero, e>> zero4, FSharpFunc<f, FSharpFunc<Zero, f>> zero5, FSharpFunc<g, FSharpFunc<Zero, g>> zero6, (a, b, c, d, e, f, g) _arg1, Zero _arg2) { Zero zero7 = null; a item = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero7); zero7 = null; b item2 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<b>((FSharpFunc<?, FSharpFunc<Zero, b>>)(object)zero1, default(b), zero7); zero7 = null; c item3 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<c>((FSharpFunc<?, FSharpFunc<Zero, c>>)(object)zero2, default(c), zero7); zero7 = null; d item4 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<d>((FSharpFunc<?, FSharpFunc<Zero, d>>)(object)zero3, default(d), zero7); zero7 = null; e item5 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<e>((FSharpFunc<?, FSharpFunc<Zero, e>>)(object)zero4, default(e), zero7); zero7 = null; f item6 = FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<f>((FSharpFunc<?, FSharpFunc<Zero, f>>)(object)zero5, default(f), zero7); zero7 = null; return ValueTuple.Create(item, item2, item3, item4, item5, item6, FSharpFunc<?, FSharpPlus.Control.Zero>.InvokeFast<g>((FSharpFunc<?, FSharpFunc<Zero, g>>)(object)zero6, default(g), zero7)); } public static Task<a> Zero<a>(Task<a> _arg1, Zero _arg2) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } a result = (a)(object)null; TaskCompletionSource<a> taskCompletionSource = new TaskCompletionSource<a>(); taskCompletionSource.SetResult(result); return taskCompletionSource.Task; } public static Task<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, Task<a> _arg1, Zero _arg2) { Zero zero2 = null; a result = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); TaskCompletionSource<a> taskCompletionSource = new TaskCompletionSource<a>(); taskCompletionSource.SetResult(result); return taskCompletionSource.Task; } public static ValueTask<a> Zero<a>(ValueTask<a> _arg3, Zero _arg4) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } a result = (a)(object)null; return new ValueTask<a>(result); } public static ValueTask<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, ValueTask<a> _arg3, Zero _arg4) { Zero zero2 = null; a result = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); return new ValueTask<a>(result); } public static FSharpFunc<T, Monoid> Zero<T, Monoid>(FSharpFunc<T, Monoid> _arg5, Zero _arg6) { return $Numeric.Zero@201<T, Monoid>.@_instance; } public static FSharpFunc<T, Monoid> Zero$W<T, Monoid>(FSharpFunc<Monoid, FSharpFunc<Zero, Monoid>> zero, FSharpFunc<T, Monoid> _arg5, Zero _arg6) { return new $Numeric.Zero@201-1<T, Monoid>(zero); } public static FSharpAsync<a> Zero<a>(FSharpAsync<a> _arg7, Zero _arg8) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } a v = (a)(object)null; return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $Numeric.Zero@202-2<a>(v)); } public static FSharpAsync<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpAsync<a> _arg7, Zero _arg8) { Zero zero2 = null; a v = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); return AsyncPrimitives.MakeAsync<a>((FSharpFunc<AsyncActivation<a>, AsyncReturn>)new $Numeric.Zero@202-3<a>(zero, v)); } public static FSharpExpr<a> Zero<a>(FSharpExpr<a> _arg9, Zero _arg10) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } a val = (a)(object)null; return FSharpExpr.Cast<a>(FSharpExpr.Value<a>(val)); } public static FSharpExpr<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, FSharpExpr<a> _arg9, Zero _arg10) { Zero zero2 = null; a val = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); return FSharpExpr.Cast<a>(FSharpExpr.Value<a>(val)); } public static Lazy<a> Zero<a>(Lazy<a> _arg11, Zero _arg12) { Zero zero = null; if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Zero is not supported"); } a v = (a)(object)null; return LazyExtensions.Create<a>((FSharpFunc<Unit, a>)new $Numeric.Zero@206-4<a>(v)); } public static Lazy<a> Zero$W<a>(FSharpFunc<a, FSharpFunc<Zero, a>> zero, Lazy<a> _arg11, Zero _arg12) { Zero zero2 = null; a v = FSharpFunc<a, FSharpPlus.Control.Zero>.InvokeFast<a>(zero, default(a), zero2); return LazyExtensions.Create<a>((FSharpFunc<Unit, a>)new $Numeric.Zero@206-5<a>(zero, v)); } public static Dictionary<a, b> Zero<a, b>(Dictionary<a, b> _arg13, Zero _arg14) { return new Dictionary<a, b>(); } public static List<a> Zero<a>(List<a> _arg15, Zero _arg16) { return new List<a>(); } public static R Zero<R>(R _arg1, Default6 _arg2) { FromInt64 item = null; return FSharpFunc<Tuple<FromInt64, R>, long>.InvokeFast<R>((FSharpFunc<Tuple<FromInt64, R>, FSharpFunc<long, R>>)$Numeric.Zero@211-6<R>.@_instance, new Tuple<FromInt64, R>(item, default(R)), 0L); } public static R Zero$W<R>(FSharpFunc<R, FSharpFunc<FromInt64, FSharpFunc<long, R>>> fromInt64, R _arg1, Default6 _arg2) { FromInt64 item = null; return FSharpFunc<Tuple<FromInt64, R>, long>.InvokeFast<R>((FSharpFunc<Tuple<FromInt64, R>, FSharpFunc<long, R>>)new $Numeric.Zero@211-7<R>(fromInt64), new Tuple<FromInt64, R>(item, default(R)), 0L); } public static R Zero<R>(R _arg3, Default5 _arg4) { throw new NotSupportedException("Dynamic invocation of op_Implicit is not supported"); } public static R Zero$W<R>(FSharpFunc<int, R> op_Implicit, R _arg3, Default5 _arg4) { return op_Implicit.Invoke(0); } public static IEnumerable<a> Zero<a>(IEnumerable<a> _arg5, Default4 _arg6) { return SeqModule.Empty<a>(); } public static IEnumerator<a> Zero<a>(IEnumerator<a> _arg7, Default4 _arg8) { return new Enumerator.EmptyEnumerator<a>(); } public static IDictionary<a, b> Zero<a, b>(IDictionary<a, b> _arg9, Default4 _arg10) { return new Dictionary<a, b>(); } public static IReadOnlyDictionary<a, b> Zero<a, b>(IReadOnlyDictionary<a, b> _arg11, Default4 _arg12) { return new Dictionary<a, b>(); } public static t Zero<t>(t _arg13, Default3 _arg14) { throw new NotSupportedException("Dynamic invocation of get_Empty is not supported"); } public static t Zero$W<t>(FSharpFunc<Unit, t> get_Empty, t _arg13, Default3 _arg14) { return get_Empty.Invoke((Unit)null); } public static t Zero<t>(t _arg15, Default2 _arg16) { throw new NotSupportedException("Dynamic invocation of FromInt32 is not supported"); } public static t Zero$W<t>(FSharpFunc<int, t> fromInt32, t _arg15, Default2 _arg16) { return fromInt32.Invoke(0); } public static FSharpFunc<a, a> Zero<t, a>(t _arg17, Default2 _arg18) where t : class { return $Numeric.Zero@222-8<a>.@_instance; } public static t Zero<t>(t _arg19, Default1 _arg20) { return LanguagePrimitives.GenericZeroDynamic<t>(); } public static t Zero$W<t>(FSharpFunc<Unit, t> get_Zero, t _arg19, Default1 _arg20) { return get_Zero.Invoke((Unit)null); } public static FSharpFunc<a, a> Zero<t, a>(t _arg21, Default1 _arg22) where t : class { return $Numeric.Zero@225-9<a>.@_instance; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class Abs : Default1 { public static t Abs<t, u>(t x, Default2 _arg1) { if (0 == 0) { throw new NotSupportedException("Dynamic invocation of Abs is not supported"); } u val = (u)(object)null; Explicit item = null; return FSharpFunc<Tuple<Explicit, t>, ?>.InvokeFast<t>((FSharpFunc<Tuple<Explicit, t>, FSharpFunc<?, t>>)(object)$Numeric.Abs@231<t, u>.@_instance, new Tuple<Explicit, t>(item, default(t)), val); } public static t Abs$W<t,
System.Threading.Channels.dll
Decompiled a year agousing System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Sources; using FxResources.System.Threading.Channels; using Internal; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyMetadata("Serviceable", "True")] [assembly: AssemblyMetadata("PreferInbox", "True")] [assembly: AssemblyDefaultAlias("System.Threading.Channels")] [assembly: NeutralResourcesLanguage("en-US")] [assembly: CLSCompliant(true)] [assembly: AssemblyMetadata("IsTrimmable", "True")] [assembly: DefaultDllImportSearchPaths(DllImportSearchPath.System32 | DllImportSearchPath.AssemblyDirectory)] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: AssemblyDescription("Provides types for passing data between producers and consumers.\r\n\r\nCommonly Used Types:\r\nSystem.Threading.Channel\r\nSystem.Threading.Channel<T>")] [assembly: AssemblyFileVersion("8.0.23.53103")] [assembly: AssemblyInformationalVersion("8.0.0+5535e31a712343a63f5d7d796cd874e563e5ac14")] [assembly: AssemblyProduct("Microsoft® .NET")] [assembly: AssemblyTitle("System.Threading.Channels")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/dotnet/runtime")] [assembly: AssemblyVersion("8.0.0.0")] [module: RefSafetyRules(11)] [module: System.Runtime.CompilerServices.NullablePublicOnly(false)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class NullablePublicOnlyAttribute : Attribute { public readonly bool IncludesInternals; public NullablePublicOnlyAttribute(bool P_0) { IncludesInternals = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace FxResources.System.Threading.Channels { internal static class SR { } } namespace Internal { internal static class PaddingHelpers { internal const int CACHE_LINE_SIZE = 128; } [StructLayout(LayoutKind.Explicit, Size = 124)] internal struct PaddingFor32 { } } namespace System { [StructLayout(LayoutKind.Sequential, Size = 1)] internal readonly struct VoidResult { } internal static class Obsoletions { internal const string SharedUrlFormat = "https://aka.ms/dotnet-warnings/{0}"; internal const string SystemTextEncodingUTF7Message = "The UTF-7 encoding is insecure and should not be used. Consider using UTF-8 instead."; internal const string SystemTextEncodingUTF7DiagId = "SYSLIB0001"; internal const string PrincipalPermissionAttributeMessage = "PrincipalPermissionAttribute is not honored by the runtime and must not be used."; internal const string PrincipalPermissionAttributeDiagId = "SYSLIB0002"; internal const string CodeAccessSecurityMessage = "Code Access Security is not supported or honored by the runtime."; internal const string CodeAccessSecurityDiagId = "SYSLIB0003"; internal const string ConstrainedExecutionRegionMessage = "The Constrained Execution Region (CER) feature is not supported."; internal const string ConstrainedExecutionRegionDiagId = "SYSLIB0004"; internal const string GlobalAssemblyCacheMessage = "The Global Assembly Cache is not supported."; internal const string GlobalAssemblyCacheDiagId = "SYSLIB0005"; internal const string ThreadAbortMessage = "Thread.Abort is not supported and throws PlatformNotSupportedException."; internal const string ThreadResetAbortMessage = "Thread.ResetAbort is not supported and throws PlatformNotSupportedException."; internal const string ThreadAbortDiagId = "SYSLIB0006"; internal const string DefaultCryptoAlgorithmsMessage = "The default implementation of this cryptography algorithm is not supported."; internal const string DefaultCryptoAlgorithmsDiagId = "SYSLIB0007"; internal const string CreatePdbGeneratorMessage = "The CreatePdbGenerator API is not supported and throws PlatformNotSupportedException."; internal const string CreatePdbGeneratorDiagId = "SYSLIB0008"; internal const string AuthenticationManagerMessage = "The AuthenticationManager Authenticate and PreAuthenticate methods are not supported and throw PlatformNotSupportedException."; internal const string AuthenticationManagerDiagId = "SYSLIB0009"; internal const string RemotingApisMessage = "This Remoting API is not supported and throws PlatformNotSupportedException."; internal const string RemotingApisDiagId = "SYSLIB0010"; internal const string BinaryFormatterMessage = "BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information."; internal const string BinaryFormatterDiagId = "SYSLIB0011"; internal const string CodeBaseMessage = "Assembly.CodeBase and Assembly.EscapedCodeBase are only included for .NET Framework compatibility. Use Assembly.Location instead."; internal const string CodeBaseDiagId = "SYSLIB0012"; internal const string EscapeUriStringMessage = "Uri.EscapeUriString can corrupt the Uri string in some cases. Consider using Uri.EscapeDataString for query string components instead."; internal const string EscapeUriStringDiagId = "SYSLIB0013"; internal const string WebRequestMessage = "WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead."; internal const string WebRequestDiagId = "SYSLIB0014"; internal const string DisablePrivateReflectionAttributeMessage = "DisablePrivateReflectionAttribute has no effect in .NET 6.0+."; internal const string DisablePrivateReflectionAttributeDiagId = "SYSLIB0015"; internal const string GetContextInfoMessage = "Use the Graphics.GetContextInfo overloads that accept arguments for better performance and fewer allocations."; internal const string GetContextInfoDiagId = "SYSLIB0016"; internal const string StrongNameKeyPairMessage = "Strong name signing is not supported and throws PlatformNotSupportedException."; internal const string StrongNameKeyPairDiagId = "SYSLIB0017"; internal const string ReflectionOnlyLoadingMessage = "ReflectionOnly loading is not supported and throws PlatformNotSupportedException."; internal const string ReflectionOnlyLoadingDiagId = "SYSLIB0018"; internal const string RuntimeEnvironmentMessage = "RuntimeEnvironment members SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr, and GetRuntimeInterfaceAsObject are not supported and throw PlatformNotSupportedException."; internal const string RuntimeEnvironmentDiagId = "SYSLIB0019"; internal const string JsonSerializerOptionsIgnoreNullValuesMessage = "JsonSerializerOptions.IgnoreNullValues is obsolete. To ignore null values when serializing, set DefaultIgnoreCondition to JsonIgnoreCondition.WhenWritingNull."; internal const string JsonSerializerOptionsIgnoreNullValuesDiagId = "SYSLIB0020"; internal const string DerivedCryptographicTypesMessage = "Derived cryptographic types are obsolete. Use the Create method on the base type instead."; internal const string DerivedCryptographicTypesDiagId = "SYSLIB0021"; internal const string RijndaelMessage = "The Rijndael and RijndaelManaged types are obsolete. Use Aes instead."; internal const string RijndaelDiagId = "SYSLIB0022"; internal const string RNGCryptoServiceProviderMessage = "RNGCryptoServiceProvider is obsolete. To generate a random number, use one of the RandomNumberGenerator static methods instead."; internal const string RNGCryptoServiceProviderDiagId = "SYSLIB0023"; internal const string AppDomainCreateUnloadMessage = "Creating and unloading AppDomains is not supported and throws an exception."; internal const string AppDomainCreateUnloadDiagId = "SYSLIB0024"; internal const string SuppressIldasmAttributeMessage = "SuppressIldasmAttribute has no effect in .NET 6.0+."; internal const string SuppressIldasmAttributeDiagId = "SYSLIB0025"; internal const string X509CertificateImmutableMessage = "X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate."; internal const string X509CertificateImmutableDiagId = "SYSLIB0026"; internal const string PublicKeyPropertyMessage = "PublicKey.Key is obsolete. Use the appropriate method to get the public key, such as GetRSAPublicKey."; internal const string PublicKeyPropertyDiagId = "SYSLIB0027"; internal const string X509CertificatePrivateKeyMessage = "X509Certificate2.PrivateKey is obsolete. Use the appropriate method to get the private key, such as GetRSAPrivateKey, or use the CopyWithPrivateKey method to create a new instance with a private key."; internal const string X509CertificatePrivateKeyDiagId = "SYSLIB0028"; internal const string ProduceLegacyHmacValuesMessage = "ProduceLegacyHmacValues is obsolete. Producing legacy HMAC values is not supported."; internal const string ProduceLegacyHmacValuesDiagId = "SYSLIB0029"; internal const string UseManagedSha1Message = "HMACSHA1 always uses the algorithm implementation provided by the platform. Use a constructor without the useManagedSha1 parameter."; internal const string UseManagedSha1DiagId = "SYSLIB0030"; internal const string CryptoConfigEncodeOIDMessage = "EncodeOID is obsolete. Use the ASN.1 functionality provided in System.Formats.Asn1."; internal const string CryptoConfigEncodeOIDDiagId = "SYSLIB0031"; internal const string CorruptedStateRecoveryMessage = "Recovery from corrupted process state exceptions is not supported; HandleProcessCorruptedStateExceptionsAttribute is ignored."; internal const string CorruptedStateRecoveryDiagId = "SYSLIB0032"; internal const string Rfc2898CryptDeriveKeyMessage = "Rfc2898DeriveBytes.CryptDeriveKey is obsolete and is not supported. Use PasswordDeriveBytes.CryptDeriveKey instead."; internal const string Rfc2898CryptDeriveKeyDiagId = "SYSLIB0033"; internal const string CmsSignerCspParamsCtorMessage = "CmsSigner(CspParameters) is obsolete and is not supported. Use an alternative constructor instead."; internal const string CmsSignerCspParamsCtorDiagId = "SYSLIB0034"; internal const string SignerInfoCounterSigMessage = "ComputeCounterSignature without specifying a CmsSigner is obsolete and is not supported. Use the overload that accepts a CmsSigner."; internal const string SignerInfoCounterSigDiagId = "SYSLIB0035"; internal const string RegexCompileToAssemblyMessage = "Regex.CompileToAssembly is obsolete and not supported. Use the GeneratedRegexAttribute with the regular expression source generator instead."; internal const string RegexCompileToAssemblyDiagId = "SYSLIB0036"; internal const string AssemblyNameMembersMessage = "AssemblyName members HashAlgorithm, ProcessorArchitecture, and VersionCompatibility are obsolete and not supported."; internal const string AssemblyNameMembersDiagId = "SYSLIB0037"; internal const string SystemDataSerializationFormatBinaryMessage = "SerializationFormat.Binary is obsolete and should not be used. See https://aka.ms/serializationformat-binary-obsolete for more information."; internal const string SystemDataSerializationFormatBinaryDiagId = "SYSLIB0038"; internal const string TlsVersion10and11Message = "TLS versions 1.0 and 1.1 have known vulnerabilities and are not recommended. Use a newer TLS version instead, or use SslProtocols.None to defer to OS defaults."; internal const string TlsVersion10and11DiagId = "SYSLIB0039"; internal const string EncryptionPolicyMessage = "EncryptionPolicy.NoEncryption and AllowEncryption significantly reduce security and should not be used in production code."; internal const string EncryptionPolicyDiagId = "SYSLIB0040"; internal const string Rfc2898OutdatedCtorMessage = "The default hash algorithm and iteration counts in Rfc2898DeriveBytes constructors are outdated and insecure. Use a constructor that accepts the hash algorithm and the number of iterations."; internal const string Rfc2898OutdatedCtorDiagId = "SYSLIB0041"; internal const string EccXmlExportImportMessage = "ToXmlString and FromXmlString have no implementation for ECC types, and are obsolete. Use a standard import and export format such as ExportSubjectPublicKeyInfo or ImportSubjectPublicKeyInfo for public keys and ExportPkcs8PrivateKey or ImportPkcs8PrivateKey for private keys."; internal const string EccXmlExportImportDiagId = "SYSLIB0042"; internal const string EcDhPublicKeyBlobMessage = "ECDiffieHellmanPublicKey.ToByteArray() and the associated constructor do not have a consistent and interoperable implementation on all platforms. Use ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() instead."; internal const string EcDhPublicKeyBlobDiagId = "SYSLIB0043"; internal const string AssemblyNameCodeBaseMessage = "AssemblyName.CodeBase and AssemblyName.EscapedCodeBase are obsolete. Using them for loading an assembly is not supported."; internal const string AssemblyNameCodeBaseDiagId = "SYSLIB0044"; internal const string CryptoStringFactoryMessage = "Cryptographic factory methods accepting an algorithm name are obsolete. Use the parameterless Create factory method on the algorithm type instead."; internal const string CryptoStringFactoryDiagId = "SYSLIB0045"; internal const string ControlledExecutionRunMessage = "ControlledExecution.Run method may corrupt the process and should not be used in production code."; internal const string ControlledExecutionRunDiagId = "SYSLIB0046"; internal const string XmlSecureResolverMessage = "XmlSecureResolver is obsolete. Use XmlResolver.ThrowingResolver instead when attempting to forbid XML external entity resolution."; internal const string XmlSecureResolverDiagId = "SYSLIB0047"; internal const string RsaEncryptDecryptValueMessage = "RSA.EncryptValue and DecryptValue are not supported and throw NotSupportedException. Use RSA.Encrypt and RSA.Decrypt instead."; internal const string RsaEncryptDecryptDiagId = "SYSLIB0048"; internal const string JsonSerializerOptionsAddContextMessage = "JsonSerializerOptions.AddContext is obsolete. To register a JsonSerializerContext, use either the TypeInfoResolver or TypeInfoResolverChain properties."; internal const string JsonSerializerOptionsAddContextDiagId = "SYSLIB0049"; internal const string LegacyFormatterMessage = "Formatter-based serialization is obsolete and should not be used."; internal const string LegacyFormatterDiagId = "SYSLIB0050"; internal const string LegacyFormatterImplMessage = "This API supports obsolete formatter-based serialization. It should not be called or extended by application code."; internal const string LegacyFormatterImplDiagId = "SYSLIB0051"; internal const string RegexExtensibilityImplMessage = "This API supports obsolete mechanisms for Regex extensibility. It is not supported."; internal const string RegexExtensibilityDiagId = "SYSLIB0052"; internal const string AesGcmTagConstructorMessage = "AesGcm should indicate the required tag size for encryption and decryption. Use a constructor that accepts the tag size."; internal const string AesGcmTagConstructorDiagId = "SYSLIB0053"; } internal static class SR { private static readonly bool s_usingResourceKeys = AppContext.TryGetSwitch("System.Resources.UseSystemResourceKeys", out var isEnabled) && isEnabled; private static ResourceManager s_resourceManager; internal static ResourceManager ResourceManager => s_resourceManager ?? (s_resourceManager = new ResourceManager(typeof(SR))); internal static string ChannelClosedException_DefaultMessage => GetResourceString("ChannelClosedException_DefaultMessage"); internal static string InvalidOperation_IncompleteAsyncOperation => GetResourceString("InvalidOperation_IncompleteAsyncOperation"); internal static string InvalidOperation_MultipleContinuations => GetResourceString("InvalidOperation_MultipleContinuations"); internal static string InvalidOperation_IncorrectToken => GetResourceString("InvalidOperation_IncorrectToken"); internal static bool UsingResourceKeys() { return s_usingResourceKeys; } private static string GetResourceString(string resourceKey) { if (UsingResourceKeys()) { return resourceKey; } string result = null; try { result = ResourceManager.GetString(resourceKey); } catch (MissingManifestResourceException) { } return result; } private static string GetResourceString(string resourceKey, string defaultString) { string resourceString = GetResourceString(resourceKey); if (!(resourceKey == resourceString) && resourceString != null) { return resourceString; } return defaultString; } internal static string Format(string resourceFormat, object p1) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1); } return string.Format(resourceFormat, p1); } internal static string Format(string resourceFormat, object p1, object p2) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1, p2); } return string.Format(resourceFormat, p1, p2); } internal static string Format(string resourceFormat, object p1, object p2, object p3) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1, p2, p3); } return string.Format(resourceFormat, p1, p2, p3); } internal static string Format(string resourceFormat, params object[] args) { if (args != null) { if (UsingResourceKeys()) { return resourceFormat + ", " + string.Join(", ", args); } return string.Format(resourceFormat, args); } return resourceFormat; } internal static string Format(IFormatProvider provider, string resourceFormat, object p1) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1); } return string.Format(provider, resourceFormat, p1); } internal static string Format(IFormatProvider provider, string resourceFormat, object p1, object p2) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1, p2); } return string.Format(provider, resourceFormat, p1, p2); } internal static string Format(IFormatProvider provider, string resourceFormat, object p1, object p2, object p3) { if (UsingResourceKeys()) { return string.Join(", ", resourceFormat, p1, p2, p3); } return string.Format(provider, resourceFormat, p1, p2, p3); } internal static string Format(IFormatProvider provider, string resourceFormat, params object[] args) { if (args != null) { if (UsingResourceKeys()) { return resourceFormat + ", " + string.Join(", ", args); } return string.Format(provider, resourceFormat, args); } return resourceFormat; } } } namespace System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] internal sealed class MemberNotNullAttribute : Attribute { public string[] Members { get; } public MemberNotNullAttribute(string member) { Members = new string[1] { member }; } public MemberNotNullAttribute(params string[] members) { Members = members; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] internal sealed class MemberNotNullWhenAttribute : Attribute { public bool ReturnValue { get; } public string[] Members { get; } public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; Members = new string[1] { member }; } public MemberNotNullWhenAttribute(bool returnValue, params string[] members) { ReturnValue = returnValue; Members = members; } } } namespace System.Runtime.InteropServices { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] internal sealed class LibraryImportAttribute : Attribute { public string LibraryName { get; } public string EntryPoint { get; set; } public StringMarshalling StringMarshalling { get; set; } public Type StringMarshallingCustomType { get; set; } public bool SetLastError { get; set; } public LibraryImportAttribute(string libraryName) { LibraryName = libraryName; } } internal enum StringMarshalling { Custom, Utf8, Utf16 } } namespace System.Collections.Generic { [DebuggerDisplay("Count = {_size}")] internal sealed class Deque<T> { private T[] _array = Array.Empty<T>(); private int _head; private int _tail; private int _size; public int Count => _size; public bool IsEmpty => _size == 0; public void EnqueueTail(T item) { if (_size == _array.Length) { Grow(); } _array[_tail] = item; if (++_tail == _array.Length) { _tail = 0; } _size++; } public T DequeueHead() { T result = _array[_head]; _array[_head] = default(T); if (++_head == _array.Length) { _head = 0; } _size--; return result; } public T PeekHead() { return _array[_head]; } public T PeekTail() { int num = _tail - 1; if (num == -1) { num = _array.Length - 1; } return _array[num]; } public T DequeueTail() { if (--_tail == -1) { _tail = _array.Length - 1; } T result = _array[_tail]; _array[_tail] = default(T); _size--; return result; } public IEnumerator<T> GetEnumerator() { int pos = _head; int count = _size; while (count-- > 0) { yield return _array[pos]; pos = (pos + 1) % _array.Length; } } private void Grow() { int num = (int)((long)_array.Length * 2L); if (num < _array.Length + 4) { num = _array.Length + 4; } T[] array = new T[num]; if (_head == 0) { Array.Copy(_array, array, _size); } else { Array.Copy(_array, _head, array, 0, _array.Length - _head); Array.Copy(_array, 0, array, _array.Length - _head, _tail); } _array = array; _head = 0; _tail = _size; } } } namespace System.Collections.Concurrent { internal interface IProducerConsumerQueue<T> : IEnumerable<T>, IEnumerable { bool IsEmpty { get; } int Count { get; } void Enqueue(T item); bool TryDequeue([MaybeNullWhen(false)] out T result); int GetCountSafe(object syncObj); } [DebuggerDisplay("Count = {Count}")] internal sealed class MultiProducerMultiConsumerQueue<T> : ConcurrentQueue<T>, IProducerConsumerQueue<T>, IEnumerable<T>, IEnumerable { bool IProducerConsumerQueue<T>.IsEmpty => base.IsEmpty; int IProducerConsumerQueue<T>.Count => base.Count; void IProducerConsumerQueue<T>.Enqueue(T item) { Enqueue(item); } bool IProducerConsumerQueue<T>.TryDequeue([MaybeNullWhen(false)] out T result) { return TryDequeue(out result); } int IProducerConsumerQueue<T>.GetCountSafe(object syncObj) { return base.Count; } } [DebuggerDisplay("Count = {Count}")] [DebuggerTypeProxy(typeof(SingleProducerSingleConsumerQueue<>.SingleProducerSingleConsumerQueue_DebugView))] internal sealed class SingleProducerSingleConsumerQueue<T> : IProducerConsumerQueue<T>, IEnumerable<T>, IEnumerable { [StructLayout(LayoutKind.Sequential)] private sealed class Segment { internal Segment _next; internal readonly T[] _array; internal SegmentState _state; internal Segment(int size) { _array = new T[size]; } } private struct SegmentState { internal Internal.PaddingFor32 _pad0; internal volatile int _first; internal int _lastCopy; internal Internal.PaddingFor32 _pad1; internal int _firstCopy; internal volatile int _last; internal Internal.PaddingFor32 _pad2; } private sealed class SingleProducerSingleConsumerQueue_DebugView { private readonly SingleProducerSingleConsumerQueue<T> _queue; [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public T[] Items => new List<T>(_queue).ToArray(); public SingleProducerSingleConsumerQueue_DebugView(SingleProducerSingleConsumerQueue<T> queue) { _queue = queue; } } private const int InitialSegmentSize = 32; private const int MaxSegmentSize = 16777216; private volatile Segment _head; private volatile Segment _tail; public bool IsEmpty { get { Segment head = _head; if (head._state._first != head._state._lastCopy) { return false; } if (head._state._first != head._state._last) { return false; } return head._next == null; } } public int Count { get { int num = 0; for (Segment segment = _head; segment != null; segment = segment._next) { int num2 = segment._array.Length; int first; int last; do { first = segment._state._first; last = segment._state._last; } while (first != segment._state._first); num += (last - first) & (num2 - 1); } return num; } } public SingleProducerSingleConsumerQueue() { _head = (_tail = new Segment(32)); } public void Enqueue(T item) { Segment segment = _tail; T[] array = segment._array; int last = segment._state._last; int num = (last + 1) & (array.Length - 1); if (num != segment._state._firstCopy) { array[last] = item; segment._state._last = num; } else { EnqueueSlow(item, ref segment); } } private void EnqueueSlow(T item, ref Segment segment) { if (segment._state._firstCopy != segment._state._first) { segment._state._firstCopy = segment._state._first; Enqueue(item); return; } int size = Math.Min(_tail._array.Length * 2, 16777216); Segment segment2 = new Segment(size); segment2._array[0] = item; segment2._state._last = 1; segment2._state._lastCopy = 1; try { } finally { Volatile.Write(ref _tail._next, segment2); _tail = segment2; } } public bool TryDequeue([MaybeNullWhen(false)] out T result) { Segment head = _head; T[] array = head._array; int first = head._state._first; if (first != head._state._lastCopy) { result = array[first]; array[first] = default(T); head._state._first = (first + 1) & (array.Length - 1); return true; } return TryDequeueSlow(head, array, peek: false, out result); } public bool TryPeek([MaybeNullWhen(false)] out T result) { Segment head = _head; T[] array = head._array; int first = head._state._first; if (first != head._state._lastCopy) { result = array[first]; return true; } return TryDequeueSlow(head, array, peek: true, out result); } private bool TryDequeueSlow(Segment segment, T[] array, bool peek, [MaybeNullWhen(false)] out T result) { if (segment._state._last != segment._state._lastCopy) { segment._state._lastCopy = segment._state._last; if (!peek) { return TryDequeue(out result); } return TryPeek(out result); } if (segment._next != null && segment._state._first == segment._state._last) { segment = segment._next; array = segment._array; _head = segment; } int first = segment._state._first; if (first == segment._state._last) { result = default(T); return false; } result = array[first]; if (!peek) { array[first] = default(T); segment._state._first = (first + 1) & (segment._array.Length - 1); segment._state._lastCopy = segment._state._last; } return true; } public bool TryDequeueIf(Predicate<T> predicate, [MaybeNullWhen(false)] out T result) { Segment head = _head; T[] array = head._array; int first = head._state._first; if (first != head._state._lastCopy) { result = array[first]; if (predicate == null || predicate(result)) { array[first] = default(T); head._state._first = (first + 1) & (array.Length - 1); return true; } result = default(T); return false; } return TryDequeueIfSlow(predicate, head, array, out result); } private bool TryDequeueIfSlow(Predicate<T> predicate, Segment segment, T[] array, [MaybeNullWhen(false)] out T result) { if (segment._state._last != segment._state._lastCopy) { segment._state._lastCopy = segment._state._last; return TryDequeueIf(predicate, out result); } if (segment._next != null && segment._state._first == segment._state._last) { segment = segment._next; array = segment._array; _head = segment; } int first = segment._state._first; if (first == segment._state._last) { result = default(T); return false; } result = array[first]; if (predicate == null || predicate(result)) { array[first] = default(T); segment._state._first = (first + 1) & (segment._array.Length - 1); segment._state._lastCopy = segment._state._last; return true; } result = default(T); return false; } public void Clear() { T result; while (TryDequeue(out result)) { } } public IEnumerator<T> GetEnumerator() { for (Segment segment = _head; segment != null; segment = segment._next) { for (int pt = segment._state._first; pt != segment._state._last; pt = (pt + 1) & (segment._array.Length - 1)) { yield return segment._array[pt]; } } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } int IProducerConsumerQueue<T>.GetCountSafe(object syncObj) { lock (syncObj) { return Count; } } } } namespace System.Threading.Channels { internal abstract class AsyncOperation { protected static readonly Action<object> s_availableSentinel = AvailableSentinel; protected static readonly Action<object> s_completedSentinel = CompletedSentinel; private static void AvailableSentinel(object s) { } private static void CompletedSentinel(object s) { } protected static void ThrowIncompleteOperationException() { throw new InvalidOperationException(System.SR.InvalidOperation_IncompleteAsyncOperation); } protected static void ThrowMultipleContinuations() { throw new InvalidOperationException(System.SR.InvalidOperation_MultipleContinuations); } protected static void ThrowIncorrectCurrentIdException() { throw new InvalidOperationException(System.SR.InvalidOperation_IncorrectToken); } } internal class AsyncOperation<TResult> : AsyncOperation, IValueTaskSource, IValueTaskSource<TResult> { private readonly CancellationTokenRegistration _registration; private readonly bool _pooled; private readonly bool _runContinuationsAsynchronously; private volatile int _completionReserved; private TResult _result; private ExceptionDispatchInfo _error; private Action<object> _continuation; private object _continuationState; private object _schedulingContext; private ExecutionContext _executionContext; private short _currentId; public AsyncOperation<TResult> Next { get; set; } public CancellationToken CancellationToken { get; } public ValueTask ValueTask => new ValueTask(this, _currentId); public ValueTask<TResult> ValueTaskOfT => new ValueTask<TResult>(this, _currentId); internal bool IsCompleted => (object)_continuation == AsyncOperation.s_completedSentinel; public AsyncOperation(bool runContinuationsAsynchronously, CancellationToken cancellationToken = default(CancellationToken), bool pooled = false) { _continuation = (pooled ? AsyncOperation.s_availableSentinel : null); _pooled = pooled; _runContinuationsAsynchronously = runContinuationsAsynchronously; if (cancellationToken.CanBeCanceled) { CancellationToken = cancellationToken; _registration = UnsafeRegister(cancellationToken, delegate(object s) { AsyncOperation<TResult> asyncOperation = (AsyncOperation<TResult>)s; asyncOperation.TrySetCanceled(asyncOperation.CancellationToken); }, this); } } public ValueTaskSourceStatus GetStatus(short token) { if (_currentId != token) { AsyncOperation.ThrowIncorrectCurrentIdException(); } if (IsCompleted) { if (_error != null) { if (!(_error.SourceException is OperationCanceledException)) { return ValueTaskSourceStatus.Faulted; } return ValueTaskSourceStatus.Canceled; } return ValueTaskSourceStatus.Succeeded; } return ValueTaskSourceStatus.Pending; } public TResult GetResult(short token) { if (_currentId != token) { AsyncOperation.ThrowIncorrectCurrentIdException(); } if (!IsCompleted) { AsyncOperation.ThrowIncompleteOperationException(); } ExceptionDispatchInfo error = _error; TResult result = _result; _currentId++; if (_pooled) { Volatile.Write(ref _continuation, AsyncOperation.s_availableSentinel); } error?.Throw(); return result; } void IValueTaskSource.GetResult(short token) { if (_currentId != token) { AsyncOperation.ThrowIncorrectCurrentIdException(); } if (!IsCompleted) { AsyncOperation.ThrowIncompleteOperationException(); } ExceptionDispatchInfo error = _error; _currentId++; if (_pooled) { Volatile.Write(ref _continuation, AsyncOperation.s_availableSentinel); } error?.Throw(); } public bool TryOwnAndReset() { if ((object)Interlocked.CompareExchange(ref _continuation, null, AsyncOperation.s_availableSentinel) == AsyncOperation.s_availableSentinel) { _continuationState = null; _result = default(TResult); _error = null; _schedulingContext = null; _executionContext = null; return true; } return false; } public void OnCompleted(Action<object> continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags) { if (_currentId != token) { AsyncOperation.ThrowIncorrectCurrentIdException(); } if (_continuationState != null) { AsyncOperation.ThrowMultipleContinuations(); } _continuationState = state; if ((flags & ValueTaskSourceOnCompletedFlags.FlowExecutionContext) != 0) { _executionContext = ExecutionContext.Capture(); } SynchronizationContext synchronizationContext = null; TaskScheduler taskScheduler = null; if ((flags & ValueTaskSourceOnCompletedFlags.UseSchedulingContext) != 0) { synchronizationContext = SynchronizationContext.Current; if (synchronizationContext != null && synchronizationContext.GetType() != typeof(SynchronizationContext)) { _schedulingContext = synchronizationContext; } else { synchronizationContext = null; taskScheduler = TaskScheduler.Current; if (taskScheduler != TaskScheduler.Default) { _schedulingContext = taskScheduler; } } } Action<object> action = Interlocked.CompareExchange(ref _continuation, continuation, null); if (action == null) { return; } if ((object)action != AsyncOperation.s_completedSentinel) { AsyncOperation.ThrowMultipleContinuations(); } if (_schedulingContext == null) { if (_executionContext == null) { UnsafeQueueUserWorkItem(continuation, state); } else { QueueUserWorkItem(continuation, state); } } else if (synchronizationContext != null) { synchronizationContext.Post(delegate(object s) { KeyValuePair<Action<object>, object> keyValuePair = (KeyValuePair<Action<object>, object>)s; keyValuePair.Key(keyValuePair.Value); }, new KeyValuePair<Action<object>, object>(continuation, state)); } else { Task.Factory.StartNew(continuation, state, CancellationToken.None, TaskCreationOptions.DenyChildAttach, taskScheduler); } } public bool UnregisterCancellation() { if (CancellationToken.CanBeCanceled) { _registration.Dispose(); return _completionReserved == 0; } return true; } public bool TrySetResult(TResult item) { UnregisterCancellation(); if (TryReserveCompletionIfCancelable()) { _result = item; SignalCompletion(); return true; } return false; } public bool TrySetException(Exception exception) { UnregisterCancellation(); if (TryReserveCompletionIfCancelable()) { _error = ExceptionDispatchInfo.Capture(exception); SignalCompletion(); return true; } return false; } public bool TrySetCanceled(CancellationToken cancellationToken = default(CancellationToken)) { if (TryReserveCompletionIfCancelable()) { _error = ExceptionDispatchInfo.Capture(new OperationCanceledException(cancellationToken)); SignalCompletion(); return true; } return false; } private bool TryReserveCompletionIfCancelable() { if (CancellationToken.CanBeCanceled) { return Interlocked.CompareExchange(ref _completionReserved, 1, 0) == 0; } return true; } private void SignalCompletion() { if (_continuation == null && Interlocked.CompareExchange(ref _continuation, AsyncOperation.s_completedSentinel, null) == null) { return; } if (_schedulingContext == null) { if (_runContinuationsAsynchronously) { UnsafeQueueSetCompletionAndInvokeContinuation(); return; } } else if (_schedulingContext is SynchronizationContext synchronizationContext) { if (_runContinuationsAsynchronously || synchronizationContext != SynchronizationContext.Current) { synchronizationContext.Post(delegate(object s) { ((AsyncOperation<TResult>)s).SetCompletionAndInvokeContinuation(); }, this); return; } } else { TaskScheduler taskScheduler = (TaskScheduler)_schedulingContext; if (_runContinuationsAsynchronously || taskScheduler != TaskScheduler.Current) { Task.Factory.StartNew(delegate(object s) { ((AsyncOperation<TResult>)s).SetCompletionAndInvokeContinuation(); }, this, CancellationToken.None, TaskCreationOptions.DenyChildAttach, taskScheduler); return; } } SetCompletionAndInvokeContinuation(); } private void SetCompletionAndInvokeContinuation() { if (_executionContext == null) { Action<object> continuation = _continuation; _continuation = AsyncOperation.s_completedSentinel; continuation(_continuationState); return; } ExecutionContext.Run(_executionContext, delegate(object s) { AsyncOperation<TResult> asyncOperation = (AsyncOperation<TResult>)s; Action<object> continuation2 = asyncOperation._continuation; asyncOperation._continuation = AsyncOperation.s_completedSentinel; continuation2(asyncOperation._continuationState); }, this); } private void UnsafeQueueSetCompletionAndInvokeContinuation() { ThreadPool.UnsafeQueueUserWorkItem(delegate(object s) { ((AsyncOperation<TResult>)s).SetCompletionAndInvokeContinuation(); }, this); } private static void UnsafeQueueUserWorkItem(Action<object> action, object state) { QueueUserWorkItem(action, state); } private static void QueueUserWorkItem(Action<object> action, object state) { Task.Factory.StartNew(action, state, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); } private static CancellationTokenRegistration UnsafeRegister(CancellationToken cancellationToken, Action<object> action, object state) { return cancellationToken.Register(action, state); } } internal sealed class VoidAsyncOperationWithData<TData> : AsyncOperation<VoidResult> { public TData Item { get; set; } public VoidAsyncOperationWithData(bool runContinuationsAsynchronously, CancellationToken cancellationToken = default(CancellationToken), bool pooled = false) : base(runContinuationsAsynchronously, cancellationToken, pooled) { } } [DebuggerDisplay("Items = {ItemsCountForDebugger}, Capacity = {_bufferedCapacity}, Mode = {_mode}, Closed = {ChannelIsClosedForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] internal sealed class BoundedChannel<T> : Channel<T>, IDebugEnumerable<T> { [DebuggerDisplay("Items = {ItemsCountForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class BoundedChannelReader : ChannelReader<T>, IDebugEnumerable<T> { internal readonly BoundedChannel<T> _parent; private readonly AsyncOperation<T> _readerSingleton; private readonly AsyncOperation<bool> _waiterSingleton; public override Task Completion => _parent._completion.Task; public override bool CanCount => true; public override bool CanPeek => true; public override int Count { get { BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { return parent._items.Count; } } } private int ItemsCountForDebugger => _parent._items.Count; internal BoundedChannelReader(BoundedChannel<T> parent) { _parent = parent; _readerSingleton = new AsyncOperation<T>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); _waiterSingleton = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); } public override bool TryRead([MaybeNullWhen(false)] out T item) { BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { item = DequeueItemAndPostProcess(); return true; } } item = default(T); return false; } public override bool TryPeek([MaybeNullWhen(false)] out T item) { BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { item = parent._items.PeekHead(); return true; } } item = default(T); return false; } public override ValueTask<T> ReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<T>(Task.FromCanceled<T>(cancellationToken)); } BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { return new ValueTask<T>(DequeueItemAndPostProcess()); } if (parent._doneWriting != null) { return ChannelUtilities.GetInvalidCompletionValueTask<T>(parent._doneWriting); } if (!cancellationToken.CanBeCanceled) { AsyncOperation<T> readerSingleton = _readerSingleton; if (readerSingleton.TryOwnAndReset()) { parent._blockedReaders.EnqueueTail(readerSingleton); return readerSingleton.ValueTaskOfT; } } AsyncOperation<T> asyncOperation = new AsyncOperation<T>(parent._runContinuationsAsynchronously | cancellationToken.CanBeCanceled, cancellationToken); parent._blockedReaders.EnqueueTail(asyncOperation); return asyncOperation.ValueTaskOfT; } } public override ValueTask<bool> WaitToReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { return new ValueTask<bool>(result: true); } if (parent._doneWriting != null) { return (parent._doneWriting != ChannelUtilities.s_doneWritingSentinel) ? new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) : default(ValueTask<bool>); } if (!cancellationToken.CanBeCanceled) { AsyncOperation<bool> waiterSingleton = _waiterSingleton; if (waiterSingleton.TryOwnAndReset()) { ChannelUtilities.QueueWaiter(ref parent._waitingReadersTail, waiterSingleton); return waiterSingleton.ValueTaskOfT; } } AsyncOperation<bool> asyncOperation = new AsyncOperation<bool>(parent._runContinuationsAsynchronously | cancellationToken.CanBeCanceled, cancellationToken); ChannelUtilities.QueueWaiter(ref _parent._waitingReadersTail, asyncOperation); return asyncOperation.ValueTaskOfT; } } private T DequeueItemAndPostProcess() { BoundedChannel<T> parent = _parent; T result = parent._items.DequeueHead(); if (parent._doneWriting != null) { if (parent._items.IsEmpty) { ChannelUtilities.Complete(parent._completion, parent._doneWriting); } } else { while (!parent._blockedWriters.IsEmpty) { VoidAsyncOperationWithData<T> voidAsyncOperationWithData = parent._blockedWriters.DequeueHead(); if (voidAsyncOperationWithData.TrySetResult(default(VoidResult))) { parent._items.EnqueueTail(voidAsyncOperationWithData.Item); return result; } } ChannelUtilities.WakeUpWaiters(ref parent._waitingWritersTail, result: true); } return result; } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } [DebuggerDisplay("Items = {ItemsCountForDebugger}, Capacity = {CapacityForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class BoundedChannelWriter : ChannelWriter<T>, IDebugEnumerable<T> { internal readonly BoundedChannel<T> _parent; private readonly VoidAsyncOperationWithData<T> _writerSingleton; private readonly AsyncOperation<bool> _waiterSingleton; private int ItemsCountForDebugger => _parent._items.Count; private int CapacityForDebugger => _parent._bufferedCapacity; internal BoundedChannelWriter(BoundedChannel<T> parent) { _parent = parent; _writerSingleton = new VoidAsyncOperationWithData<T>(runContinuationsAsynchronously: true, default(CancellationToken), pooled: true); _waiterSingleton = new AsyncOperation<bool>(runContinuationsAsynchronously: true, default(CancellationToken), pooled: true); } public override bool TryComplete(Exception error) { BoundedChannel<T> parent = _parent; bool isEmpty; lock (parent.SyncObj) { if (parent._doneWriting != null) { return false; } parent._doneWriting = error ?? ChannelUtilities.s_doneWritingSentinel; isEmpty = parent._items.IsEmpty; } if (isEmpty) { ChannelUtilities.Complete(parent._completion, error); } ChannelUtilities.FailOperations<AsyncOperation<T>, T>(parent._blockedReaders, ChannelUtilities.CreateInvalidCompletionException(error)); ChannelUtilities.FailOperations<VoidAsyncOperationWithData<T>, VoidResult>(parent._blockedWriters, ChannelUtilities.CreateInvalidCompletionException(error)); ChannelUtilities.WakeUpWaiters(ref parent._waitingReadersTail, result: false, error); ChannelUtilities.WakeUpWaiters(ref parent._waitingWritersTail, result: false, error); return true; } public override bool TryWrite(T item) { AsyncOperation<T> asyncOperation = null; AsyncOperation<bool> listTail = null; BoundedChannel<T> parent = _parent; bool lockTaken = false; try { Monitor.Enter(parent.SyncObj, ref lockTaken); if (parent._doneWriting != null) { return false; } int count = parent._items.Count; if (count != 0) { if (count < parent._bufferedCapacity) { parent._items.EnqueueTail(item); return true; } if (parent._mode == BoundedChannelFullMode.Wait) { return false; } if (parent._mode == BoundedChannelFullMode.DropWrite) { Monitor.Exit(parent.SyncObj); lockTaken = false; parent._itemDropped?.Invoke(item); return true; } T obj = ((parent._mode == BoundedChannelFullMode.DropNewest) ? parent._items.DequeueTail() : parent._items.DequeueHead()); parent._items.EnqueueTail(item); Monitor.Exit(parent.SyncObj); lockTaken = false; parent._itemDropped?.Invoke(obj); return true; } while (!parent._blockedReaders.IsEmpty) { AsyncOperation<T> asyncOperation2 = parent._blockedReaders.DequeueHead(); if (asyncOperation2.UnregisterCancellation()) { asyncOperation = asyncOperation2; break; } } if (asyncOperation == null) { parent._items.EnqueueTail(item); listTail = parent._waitingReadersTail; if (listTail == null) { return true; } parent._waitingReadersTail = null; } } finally { if (lockTaken) { Monitor.Exit(parent.SyncObj); } } if (asyncOperation != null) { bool flag = asyncOperation.TrySetResult(item); } else { ChannelUtilities.WakeUpWaiters(ref listTail, result: true); } return true; } public override ValueTask<bool> WaitToWriteAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } BoundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (parent._doneWriting != null) { return (parent._doneWriting != ChannelUtilities.s_doneWritingSentinel) ? new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) : default(ValueTask<bool>); } if (parent._items.Count < parent._bufferedCapacity || parent._mode != 0) { return new ValueTask<bool>(result: true); } if (!cancellationToken.CanBeCanceled) { AsyncOperation<bool> waiterSingleton = _waiterSingleton; if (waiterSingleton.TryOwnAndReset()) { ChannelUtilities.QueueWaiter(ref parent._waitingWritersTail, waiterSingleton); return waiterSingleton.ValueTaskOfT; } } AsyncOperation<bool> asyncOperation = new AsyncOperation<bool>(runContinuationsAsynchronously: true, cancellationToken); ChannelUtilities.QueueWaiter(ref parent._waitingWritersTail, asyncOperation); return asyncOperation.ValueTaskOfT; } } public override ValueTask WriteAsync(T item, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask(Task.FromCanceled(cancellationToken)); } AsyncOperation<T> asyncOperation = null; AsyncOperation<bool> listTail = null; BoundedChannel<T> parent = _parent; bool lockTaken = false; try { Monitor.Enter(parent.SyncObj, ref lockTaken); if (parent._doneWriting != null) { return new ValueTask(Task.FromException(ChannelUtilities.CreateInvalidCompletionException(parent._doneWriting))); } int count = parent._items.Count; if (count != 0) { if (count < parent._bufferedCapacity) { parent._items.EnqueueTail(item); return default(ValueTask); } if (parent._mode == BoundedChannelFullMode.Wait) { if (!cancellationToken.CanBeCanceled) { VoidAsyncOperationWithData<T> writerSingleton = _writerSingleton; if (writerSingleton.TryOwnAndReset()) { writerSingleton.Item = item; parent._blockedWriters.EnqueueTail(writerSingleton); return writerSingleton.ValueTask; } } VoidAsyncOperationWithData<T> voidAsyncOperationWithData = new VoidAsyncOperationWithData<T>(runContinuationsAsynchronously: true, cancellationToken); voidAsyncOperationWithData.Item = item; parent._blockedWriters.EnqueueTail(voidAsyncOperationWithData); return voidAsyncOperationWithData.ValueTask; } if (parent._mode == BoundedChannelFullMode.DropWrite) { Monitor.Exit(parent.SyncObj); lockTaken = false; parent._itemDropped?.Invoke(item); return default(ValueTask); } T obj = ((parent._mode == BoundedChannelFullMode.DropNewest) ? parent._items.DequeueTail() : parent._items.DequeueHead()); parent._items.EnqueueTail(item); Monitor.Exit(parent.SyncObj); lockTaken = false; parent._itemDropped?.Invoke(obj); return default(ValueTask); } while (!parent._blockedReaders.IsEmpty) { AsyncOperation<T> asyncOperation2 = parent._blockedReaders.DequeueHead(); if (asyncOperation2.UnregisterCancellation()) { asyncOperation = asyncOperation2; break; } } if (asyncOperation == null) { parent._items.EnqueueTail(item); listTail = parent._waitingReadersTail; if (listTail == null) { return default(ValueTask); } parent._waitingReadersTail = null; } } finally { if (lockTaken) { Monitor.Exit(parent.SyncObj); } } if (asyncOperation != null) { bool flag = asyncOperation.TrySetResult(item); } else { ChannelUtilities.WakeUpWaiters(ref listTail, result: true); } return default(ValueTask); } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } private readonly BoundedChannelFullMode _mode; private readonly Action<T> _itemDropped; private readonly TaskCompletionSource _completion; private readonly int _bufferedCapacity; private readonly Deque<T> _items = new Deque<T>(); private readonly Deque<AsyncOperation<T>> _blockedReaders = new Deque<AsyncOperation<T>>(); private readonly Deque<VoidAsyncOperationWithData<T>> _blockedWriters = new Deque<VoidAsyncOperationWithData<T>>(); private AsyncOperation<bool> _waitingReadersTail; private AsyncOperation<bool> _waitingWritersTail; private readonly bool _runContinuationsAsynchronously; private Exception _doneWriting; private object SyncObj => _items; private int ItemsCountForDebugger => _items.Count; private bool ChannelIsClosedForDebugger => _doneWriting != null; internal BoundedChannel(int bufferedCapacity, BoundedChannelFullMode mode, bool runContinuationsAsynchronously, Action<T> itemDropped) { _bufferedCapacity = bufferedCapacity; _mode = mode; _runContinuationsAsynchronously = runContinuationsAsynchronously; _itemDropped = itemDropped; _completion = new TaskCompletionSource(runContinuationsAsynchronously ? TaskCreationOptions.RunContinuationsAsynchronously : TaskCreationOptions.None); base.Reader = new BoundedChannelReader(this); base.Writer = new BoundedChannelWriter(this); } [Conditional("DEBUG")] private void AssertInvariants() { _ = _items.IsEmpty; _ = _items.Count; _ = _bufferedCapacity; _ = _blockedReaders.IsEmpty; _ = _blockedWriters.IsEmpty; _ = _completion.Task.IsCompleted; } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _items.GetEnumerator(); } } public enum BoundedChannelFullMode { Wait, DropNewest, DropOldest, DropWrite } public static class Channel { public static Channel<T> CreateUnbounded<T>() { return new UnboundedChannel<T>(runContinuationsAsynchronously: true); } public static Channel<T> CreateUnbounded<T>(UnboundedChannelOptions options) { if (options == null) { throw new ArgumentNullException("options"); } if (options.SingleReader) { return new SingleConsumerUnboundedChannel<T>(!options.AllowSynchronousContinuations); } return new UnboundedChannel<T>(!options.AllowSynchronousContinuations); } public static Channel<T> CreateBounded<T>(int capacity) { if (capacity < 1) { throw new ArgumentOutOfRangeException("capacity"); } return new BoundedChannel<T>(capacity, BoundedChannelFullMode.Wait, runContinuationsAsynchronously: true, null); } public static Channel<T> CreateBounded<T>(BoundedChannelOptions options) { return CreateBounded<T>(options, null); } public static Channel<T> CreateBounded<T>(BoundedChannelOptions options, Action<T>? itemDropped) { if (options == null) { throw new ArgumentNullException("options"); } return new BoundedChannel<T>(options.Capacity, options.FullMode, !options.AllowSynchronousContinuations, itemDropped); } } [Serializable] public class ChannelClosedException : InvalidOperationException { public ChannelClosedException() : base(System.SR.ChannelClosedException_DefaultMessage) { } public ChannelClosedException(string? message) : base(message) { } public ChannelClosedException(Exception? innerException) : base(System.SR.ChannelClosedException_DefaultMessage, innerException) { } public ChannelClosedException(string? message, Exception? innerException) : base(message, innerException) { } protected ChannelClosedException(SerializationInfo info, StreamingContext context) : base(info, context) { } } public abstract class ChannelOptions { public bool SingleWriter { get; set; } public bool SingleReader { get; set; } public bool AllowSynchronousContinuations { get; set; } } public sealed class BoundedChannelOptions : ChannelOptions { private int _capacity; private BoundedChannelFullMode _mode; public int Capacity { get { return _capacity; } set { if (value < 1) { throw new ArgumentOutOfRangeException("value"); } _capacity = value; } } public BoundedChannelFullMode FullMode { get { return _mode; } set { if ((uint)value <= 3u) { _mode = value; return; } throw new ArgumentOutOfRangeException("value"); } } public BoundedChannelOptions(int capacity) { if (capacity < 1) { throw new ArgumentOutOfRangeException("capacity"); } _capacity = capacity; } } public sealed class UnboundedChannelOptions : ChannelOptions { } public abstract class ChannelReader<T> { public virtual Task Completion => ChannelUtilities.s_neverCompletingTask; public virtual bool CanCount => false; public virtual bool CanPeek => false; public virtual int Count { get { throw new NotSupportedException(); } } public abstract bool TryRead([MaybeNullWhen(false)] out T item); public virtual bool TryPeek([MaybeNullWhen(false)] out T item) { item = default(T); return false; } public abstract ValueTask<bool> WaitToReadAsync(CancellationToken cancellationToken = default(CancellationToken)); public virtual ValueTask<T> ReadAsync(CancellationToken cancellationToken = default(CancellationToken)) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<T>(Task.FromCanceled<T>(cancellationToken)); } try { if (TryRead(out var item)) { return new ValueTask<T>(item); } } catch (Exception ex) when (!(ex is ChannelClosedException) && !(ex is OperationCanceledException)) { return new ValueTask<T>(Task.FromException<T>(ex)); } return ReadAsyncCore(cancellationToken); async ValueTask<T> ReadAsyncCore(CancellationToken ct) { T item2; do { if (!(await WaitToReadAsync(ct).ConfigureAwait(continueOnCapturedContext: false))) { throw new ChannelClosedException(); } } while (!TryRead(out item2)); return item2; } } public virtual async IAsyncEnumerable<T> ReadAllAsync([EnumeratorCancellation] CancellationToken cancellationToken = default(CancellationToken)) { while (await WaitToReadAsync(cancellationToken).ConfigureAwait(continueOnCapturedContext: false)) { T item; while (TryRead(out item)) { yield return item; } } } } internal static class ChannelUtilities { internal static readonly Exception s_doneWritingSentinel = new Exception("s_doneWritingSentinel"); internal static readonly Task<bool> s_trueTask = Task.FromResult(result: true); internal static readonly Task<bool> s_falseTask = Task.FromResult(result: false); internal static readonly Task s_neverCompletingTask = new TaskCompletionSource<bool>().Task; internal static void Complete(TaskCompletionSource tcs, Exception error = null) { if (error is OperationCanceledException ex) { tcs.TrySetCanceled(ex.CancellationToken); } else if (error != null && error != s_doneWritingSentinel) { if (tcs.TrySetException(error)) { _ = tcs.Task.Exception; } } else { tcs.TrySetResult(); } } internal static ValueTask<T> GetInvalidCompletionValueTask<T>(Exception error) { Task<T> task = ((error == s_doneWritingSentinel) ? Task.FromException<T>(CreateInvalidCompletionException()) : ((error is OperationCanceledException ex) ? Task.FromCanceled<T>(ex.CancellationToken.IsCancellationRequested ? ex.CancellationToken : new CancellationToken(canceled: true)) : Task.FromException<T>(CreateInvalidCompletionException(error)))); return new ValueTask<T>(task); } internal static void QueueWaiter(ref AsyncOperation<bool> tail, AsyncOperation<bool> waiter) { AsyncOperation<bool> asyncOperation = tail; if (asyncOperation == null) { waiter.Next = waiter; } else { waiter.Next = asyncOperation.Next; asyncOperation.Next = waiter; } tail = waiter; } internal static void WakeUpWaiters(ref AsyncOperation<bool> listTail, bool result, Exception error = null) { AsyncOperation<bool> asyncOperation = listTail; if (asyncOperation != null) { listTail = null; AsyncOperation<bool> next = asyncOperation.Next; AsyncOperation<bool> asyncOperation2 = next; do { AsyncOperation<bool> next2 = asyncOperation2.Next; asyncOperation2.Next = null; bool flag = ((error != null) ? asyncOperation2.TrySetException(error) : asyncOperation2.TrySetResult(result)); asyncOperation2 = next2; } while (asyncOperation2 != next); } } internal static void FailOperations<T, TInner>(Deque<T> operations, Exception error) where T : AsyncOperation<TInner> { while (!operations.IsEmpty) { operations.DequeueHead().TrySetException(error); } } internal static Exception CreateInvalidCompletionException(Exception inner = null) { if (!(inner is OperationCanceledException)) { if (inner == null || inner == s_doneWritingSentinel) { return new ChannelClosedException(); } return new ChannelClosedException(inner); } return inner; } } public abstract class ChannelWriter<T> { public virtual bool TryComplete(Exception? error = null) { return false; } public abstract bool TryWrite(T item); public abstract ValueTask<bool> WaitToWriteAsync(CancellationToken cancellationToken = default(CancellationToken)); public virtual ValueTask WriteAsync(T item, CancellationToken cancellationToken = default(CancellationToken)) { try { return cancellationToken.IsCancellationRequested ? new ValueTask(Task.FromCanceled<T>(cancellationToken)) : (TryWrite(item) ? default(ValueTask) : WriteAsyncCore(item, cancellationToken)); } catch (Exception exception) { return new ValueTask(Task.FromException(exception)); } } private async ValueTask WriteAsyncCore(T innerItem, CancellationToken ct) { while (await WaitToWriteAsync(ct).ConfigureAwait(continueOnCapturedContext: false)) { if (TryWrite(innerItem)) { return; } } throw ChannelUtilities.CreateInvalidCompletionException(); } public void Complete(Exception? error = null) { if (!TryComplete(error)) { throw ChannelUtilities.CreateInvalidCompletionException(); } } } public abstract class Channel<T> : Channel<T, T> { } public abstract class Channel<TWrite, TRead> { public ChannelReader<TRead> Reader { get; protected set; } public ChannelWriter<TWrite> Writer { get; protected set; } public static implicit operator ChannelReader<TRead>(Channel<TWrite, TRead> channel) { return channel.Reader; } public static implicit operator ChannelWriter<TWrite>(Channel<TWrite, TRead> channel) { return channel.Writer; } } internal interface IDebugEnumerable<T> { IEnumerator<T> GetEnumerator(); } internal sealed class DebugEnumeratorDebugView<T> { [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public T[] Items { get; } public DebugEnumeratorDebugView(IDebugEnumerable<T> enumerable) { List<T> list = new List<T>(); foreach (T item in enumerable) { list.Add(item); } Items = list.ToArray(); } } [DebuggerDisplay("Items = {ItemsCountForDebugger}, Closed = {ChannelIsClosedForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] internal sealed class SingleConsumerUnboundedChannel<T> : Channel<T>, IDebugEnumerable<T> { [DebuggerDisplay("Items = {ItemsCountForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class UnboundedChannelReader : ChannelReader<T>, IDebugEnumerable<T> { internal readonly SingleConsumerUnboundedChannel<T> _parent; private readonly AsyncOperation<T> _readerSingleton; private readonly AsyncOperation<bool> _waiterSingleton; public override Task Completion => _parent._completion.Task; public override bool CanPeek => true; private int ItemsCountForDebugger => _parent._items.Count; internal UnboundedChannelReader(SingleConsumerUnboundedChannel<T> parent) { _parent = parent; _readerSingleton = new AsyncOperation<T>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); _waiterSingleton = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); } public override ValueTask<T> ReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<T>(Task.FromCanceled<T>(cancellationToken)); } if (TryRead(out var item)) { return new ValueTask<T>(item); } SingleConsumerUnboundedChannel<T> parent = _parent; AsyncOperation<T> asyncOperation; AsyncOperation<T> asyncOperation2; lock (parent.SyncObj) { if (TryRead(out item)) { return new ValueTask<T>(item); } if (parent._doneWriting != null) { return ChannelUtilities.GetInvalidCompletionValueTask<T>(parent._doneWriting); } asyncOperation = parent._blockedReader; if (!cancellationToken.CanBeCanceled && _readerSingleton.TryOwnAndReset()) { asyncOperation2 = _readerSingleton; if (asyncOperation2 == asyncOperation) { asyncOperation = null; } } else { asyncOperation2 = new AsyncOperation<T>(_parent._runContinuationsAsynchronously, cancellationToken); } parent._blockedReader = asyncOperation2; } asyncOperation?.TrySetCanceled(); return asyncOperation2.ValueTaskOfT; } public override bool TryRead([MaybeNullWhen(false)] out T item) { SingleConsumerUnboundedChannel<T> parent = _parent; if (parent._items.TryDequeue(out item)) { if (parent._doneWriting != null && parent._items.IsEmpty) { ChannelUtilities.Complete(parent._completion, parent._doneWriting); } return true; } return false; } public override bool TryPeek([MaybeNullWhen(false)] out T item) { return _parent._items.TryPeek(out item); } public override ValueTask<bool> WaitToReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } if (!_parent._items.IsEmpty) { return new ValueTask<bool>(result: true); } SingleConsumerUnboundedChannel<T> parent = _parent; AsyncOperation<bool> asyncOperation = null; AsyncOperation<bool> asyncOperation2; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { return new ValueTask<bool>(result: true); } if (parent._doneWriting != null) { return (parent._doneWriting != ChannelUtilities.s_doneWritingSentinel) ? new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) : default(ValueTask<bool>); } asyncOperation = parent._waitingReader; if (!cancellationToken.CanBeCanceled && _waiterSingleton.TryOwnAndReset()) { asyncOperation2 = _waiterSingleton; if (asyncOperation2 == asyncOperation) { asyncOperation = null; } } else { asyncOperation2 = new AsyncOperation<bool>(_parent._runContinuationsAsynchronously, cancellationToken); } parent._waitingReader = asyncOperation2; } asyncOperation?.TrySetCanceled(); return asyncOperation2.ValueTaskOfT; } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } [DebuggerDisplay("Items = {ItemsCountForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class UnboundedChannelWriter : ChannelWriter<T>, IDebugEnumerable<T> { internal readonly SingleConsumerUnboundedChannel<T> _parent; private int ItemsCountForDebugger => _parent._items.Count; internal UnboundedChannelWriter(SingleConsumerUnboundedChannel<T> parent) { _parent = parent; } public override bool TryComplete(Exception error) { AsyncOperation<T> asyncOperation = null; AsyncOperation<bool> asyncOperation2 = null; bool flag = false; SingleConsumerUnboundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (parent._doneWriting != null) { return false; } parent._doneWriting = error ?? ChannelUtilities.s_doneWritingSentinel; if (parent._items.IsEmpty) { flag = true; if (parent._blockedReader != null) { asyncOperation = parent._blockedReader; parent._blockedReader = null; } if (parent._waitingReader != null) { asyncOperation2 = parent._waitingReader; parent._waitingReader = null; } } } if (flag) { ChannelUtilities.Complete(parent._completion, error); } if (asyncOperation != null) { error = ChannelUtilities.CreateInvalidCompletionException(error); asyncOperation.TrySetException(error); } if (asyncOperation2 != null) { if (error != null) { asyncOperation2.TrySetException(error); } else { asyncOperation2.TrySetResult(item: false); } } return true; } public override bool TryWrite(T item) { SingleConsumerUnboundedChannel<T> parent = _parent; AsyncOperation<T> asyncOperation; do { asyncOperation = null; AsyncOperation<bool> asyncOperation2 = null; lock (parent.SyncObj) { if (parent._doneWriting != null) { return false; } asyncOperation = parent._blockedReader; if (asyncOperation != null) { parent._blockedReader = null; } else { parent._items.Enqueue(item); asyncOperation2 = parent._waitingReader; if (asyncOperation2 == null) { return true; } parent._waitingReader = null; } } if (asyncOperation2 != null) { asyncOperation2.TrySetResult(item: true); return true; } } while (!asyncOperation.TrySetResult(item)); return true; } public override ValueTask<bool> WaitToWriteAsync(CancellationToken cancellationToken) { Exception doneWriting = _parent._doneWriting; if (!cancellationToken.IsCancellationRequested) { if (doneWriting != null) { if (doneWriting == ChannelUtilities.s_doneWritingSentinel) { return default(ValueTask<bool>); } return new ValueTask<bool>(Task.FromException<bool>(doneWriting)); } return new ValueTask<bool>(result: true); } return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } public override ValueTask WriteAsync(T item, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) { if (!TryWrite(item)) { return new ValueTask(Task.FromException(ChannelUtilities.CreateInvalidCompletionException(_parent._doneWriting))); } return default(ValueTask); } return new ValueTask(Task.FromCanceled(cancellationToken)); } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } private readonly TaskCompletionSource _completion; private readonly SingleProducerSingleConsumerQueue<T> _items = new SingleProducerSingleConsumerQueue<T>(); private readonly bool _runContinuationsAsynchronously; private volatile Exception _doneWriting; private AsyncOperation<T> _blockedReader; private AsyncOperation<bool> _waitingReader; private object SyncObj => _items; private int ItemsCountForDebugger => _items.Count; private bool ChannelIsClosedForDebugger => _doneWriting != null; internal SingleConsumerUnboundedChannel(bool runContinuationsAsynchronously) { _runContinuationsAsynchronously = runContinuationsAsynchronously; _completion = new TaskCompletionSource(runContinuationsAsynchronously ? TaskCreationOptions.RunContinuationsAsynchronously : TaskCreationOptions.None); base.Reader = new UnboundedChannelReader(this); base.Writer = new UnboundedChannelWriter(this); } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _items.GetEnumerator(); } } internal sealed class TaskCompletionSource : TaskCompletionSource<VoidResult> { public TaskCompletionSource(TaskCreationOptions creationOptions) : base(creationOptions) { } public bool TrySetResult() { return TrySetResult(default(VoidResult)); } } [DebuggerDisplay("Items = {ItemsCountForDebugger}, Closed = {ChannelIsClosedForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] internal sealed class UnboundedChannel<T> : Channel<T>, IDebugEnumerable<T> { [DebuggerDisplay("Items = {Count}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class UnboundedChannelReader : ChannelReader<T>, IDebugEnumerable<T> { internal readonly UnboundedChannel<T> _parent; private readonly AsyncOperation<T> _readerSingleton; private readonly AsyncOperation<bool> _waiterSingleton; public override Task Completion => _parent._completion.Task; public override bool CanCount => true; public override bool CanPeek => true; public override int Count => _parent._items.Count; internal UnboundedChannelReader(UnboundedChannel<T> parent) { _parent = parent; _readerSingleton = new AsyncOperation<T>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); _waiterSingleton = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, default(CancellationToken), pooled: true); } public override ValueTask<T> ReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<T>(Task.FromCanceled<T>(cancellationToken)); } UnboundedChannel<T> parent = _parent; if (parent._items.TryDequeue(out var result)) { CompleteIfDone(parent); return new ValueTask<T>(result); } lock (parent.SyncObj) { if (parent._items.TryDequeue(out result)) { CompleteIfDone(parent); return new ValueTask<T>(result); } if (parent._doneWriting != null) { return ChannelUtilities.GetInvalidCompletionValueTask<T>(parent._doneWriting); } if (!cancellationToken.CanBeCanceled) { AsyncOperation<T> readerSingleton = _readerSingleton; if (readerSingleton.TryOwnAndReset()) { parent._blockedReaders.EnqueueTail(readerSingleton); return readerSingleton.ValueTaskOfT; } } AsyncOperation<T> asyncOperation = new AsyncOperation<T>(parent._runContinuationsAsynchronously, cancellationToken); parent._blockedReaders.EnqueueTail(asyncOperation); return asyncOperation.ValueTaskOfT; } } public override bool TryRead([MaybeNullWhen(false)] out T item) { UnboundedChannel<T> parent = _parent; if (parent._items.TryDequeue(out item)) { CompleteIfDone(parent); return true; } item = default(T); return false; } public override bool TryPeek([MaybeNullWhen(false)] out T item) { return _parent._items.TryPeek(out item); } private static void CompleteIfDone(UnboundedChannel<T> parent) { if (parent._doneWriting != null && parent._items.IsEmpty) { ChannelUtilities.Complete(parent._completion, parent._doneWriting); } } public override ValueTask<bool> WaitToReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } if (!_parent._items.IsEmpty) { return new ValueTask<bool>(result: true); } UnboundedChannel<T> parent = _parent; lock (parent.SyncObj) { if (!parent._items.IsEmpty) { return new ValueTask<bool>(result: true); } if (parent._doneWriting != null) { return (parent._doneWriting != ChannelUtilities.s_doneWritingSentinel) ? new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) : default(ValueTask<bool>); } if (!cancellationToken.CanBeCanceled) { AsyncOperation<bool> waiterSingleton = _waiterSingleton; if (waiterSingleton.TryOwnAndReset()) { ChannelUtilities.QueueWaiter(ref parent._waitingReadersTail, waiterSingleton); return waiterSingleton.ValueTaskOfT; } } AsyncOperation<bool> asyncOperation = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, cancellationToken); ChannelUtilities.QueueWaiter(ref parent._waitingReadersTail, asyncOperation); return asyncOperation.ValueTaskOfT; } } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } [DebuggerDisplay("Items = {ItemsCountForDebugger}")] [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))] private sealed class UnboundedChannelWriter : ChannelWriter<T>, IDebugEnumerable<T> { internal readonly UnboundedChannel<T> _parent; private int ItemsCountForDebugger => _parent._items.Count; internal UnboundedChannelWriter(UnboundedChannel<T> parent) { _parent = parent; } public override bool TryComplete(Exception error) { UnboundedChannel<T> parent = _parent; bool isEmpty; lock (parent.SyncObj) { if (parent._doneWriting != null) { return false; } parent._doneWriting = error ?? ChannelUtilities.s_doneWritingSentinel; isEmpty = parent._items.IsEmpty; } if (isEmpty) { ChannelUtilities.Complete(parent._completion, error); } ChannelUtilities.FailOperations<AsyncOperation<T>, T>(parent._blockedReaders, ChannelUtilities.CreateInvalidCompletionException(error)); ChannelUtilities.WakeUpWaiters(ref parent._waitingReadersTail, result: false, error); return true; } public override bool TryWrite(T item) { UnboundedChannel<T> parent = _parent; AsyncOperation<bool> listTail; while (true) { AsyncOperation<T> asyncOperation = null; listTail = null; lock (parent.SyncObj) { if (parent._doneWriting != null) { return false; } if (parent._blockedReaders.IsEmpty) { parent._items.Enqueue(item); listTail = parent._waitingReadersTail; if (listTail == null) { return true; } parent._waitingReadersTail = null; } else { asyncOperation = parent._blockedReaders.DequeueHead(); } } if (asyncOperation == null) { break; } if (asyncOperation.TrySetResult(item)) { return true; } } ChannelUtilities.WakeUpWaiters(ref listTail, result: true); return true; } public override ValueTask<bool> WaitToWriteAsync(CancellationToken cancellationToken) { Exception doneWriting = _parent._doneWriting; if (!cancellationToken.IsCancellationRequested) { if (doneWriting != null) { if (doneWriting == ChannelUtilities.s_doneWritingSentinel) { return default(ValueTask<bool>); } return new ValueTask<bool>(Task.FromException<bool>(doneWriting)); } return new ValueTask<bool>(result: true); } return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken)); } public override ValueTask WriteAsync(T item, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) { if (!TryWrite(item)) { return new ValueTask(Task.FromException(ChannelUtilities.CreateInvalidCompletionException(_parent._doneWriting))); } return default(ValueTask); } return new ValueTask(Task.FromCanceled(cancellationToken)); } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _parent._items.GetEnumerator(); } } private readonly TaskCompletionSource _completion; private readonly ConcurrentQueue<T> _items = new ConcurrentQueue<T>(); private readonly Deque<AsyncOperation<T>> _blockedReaders = new Deque<AsyncOperation<T>>(); private readonly bool _runContinuationsAsynchronously; private AsyncOperation<bool> _waitingReadersTail; private Exception _doneWriting; private object SyncObj => _items; private int ItemsCountForDebugger => _items.Count; private bool ChannelIsClosedForDebugger => _doneWriting != null; internal UnboundedChannel(bool runContinuationsAsynchronously) { _runContinuationsAsynchronously = runContinuationsAsynchronously; _completion = new TaskCompletionSource(runContinuationsAsynchronously ? TaskCreationOptions.RunContinuationsAsynchronously : TaskCreationOptions.None); base.Reader = new UnboundedChannelReader(this); base.Writer = new UnboundedChannelWriter(this); } [Conditional("DEBUG")] private void AssertInvariants() { if (!_items.IsEmpty) { _ = _runContinuationsAsynchronously; } if (!_blockedReaders.IsEmpty || _waitingReadersTail != null) { _ = _runContinuationsAsynchronously; } _ = _completion.Task.IsCompleted; } IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() { return _items.GetEnumerator(); } } }
FSharp.Core/FSharp.Core.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.Linq; using System.Linq.Expressions; using System.Net; using System.Numerics; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using <StartupCode$FSharp-Core>; using Microsoft.FSharp.Collections; using Microsoft.FSharp.Control; using Microsoft.FSharp.Core; using Microsoft.FSharp.Core.CompilerServices; using Microsoft.FSharp.Linq; using Microsoft.FSharp.Linq.RuntimeHelpers; using Microsoft.FSharp.Primitives.Basics; using Microsoft.FSharp.Quotations; using Microsoft.FSharp.Reflection; using Microsoft.FSharp.Text.StructuredPrintfImpl; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [assembly: AssemblyCompany("Microsoft Corporation")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")] [assembly: AssemblyFileVersion("9.1.24.52202")] [assembly: AssemblyInformationalVersion("9.0.100-beta.24522.2+f07a91420bec3f657153e16c9f047cf151c1179f")] [assembly: AssemblyProduct("FSharp.Core")] [assembly: AssemblyTitle("FSharp.Core")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/dotnet/fsharp")] [assembly: NeutralResourcesLanguage("en-US")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: ComVisible(false)] [assembly: CLSCompliant(true)] [assembly: SecurityTransparent] [assembly: AutoOpen("Microsoft.FSharp")] [assembly: AutoOpen("Microsoft.FSharp.Core.LanguagePrimitives.IntrinsicOperators")] [assembly: AutoOpen("Microsoft.FSharp.Core")] [assembly: AutoOpen("Microsoft.FSharp.Collections")] [assembly: AutoOpen("Microsoft.FSharp.Control")] [assembly: AutoOpen("Microsoft.FSharp.Control.TaskBuilderExtensions.LowPriority")] [assembly: AutoOpen("Microsoft.FSharp.Control.TaskBuilderExtensions.MediumPriority")] [assembly: AutoOpen("Microsoft.FSharp.Control.TaskBuilderExtensions.HighPriority")] [assembly: AutoOpen("Microsoft.FSharp.Linq.QueryRunExtensions.LowPriority")] [assembly: AutoOpen("Microsoft.FSharp.Linq.QueryRunExtensions.HighPriority")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("9.0.0.0")] [assembly: TypeForwardedTo(typeof(AggregateException))] [assembly: TypeForwardedTo(typeof(IStructuralComparable))] [assembly: TypeForwardedTo(typeof(IStructuralEquatable))] [assembly: TypeForwardedTo(typeof(IObservable<>))] [assembly: TypeForwardedTo(typeof(IObserver<>))] [assembly: TypeForwardedTo(typeof(Lazy<>))] [assembly: TypeForwardedTo(typeof(BigInteger))] [assembly: TypeForwardedTo(typeof(CancellationToken))] [assembly: TypeForwardedTo(typeof(CancellationTokenRegistration))] [assembly: TypeForwardedTo(typeof(CancellationTokenSource))] [assembly: TypeForwardedTo(typeof(Tuple))] [assembly: TypeForwardedTo(typeof(Tuple<>))] [assembly: TypeForwardedTo(typeof(Tuple<, >))] [assembly: TypeForwardedTo(typeof(Tuple<, , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , , >))] [assembly: TypeForwardedTo(typeof(Tuple<, , , , , , , >))] namespace Microsoft.FSharp.Core { [Serializable] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class Unit : IComparable { internal Unit() { } public override int GetHashCode() { return 0; } public override bool Equals(object obj) { if (obj != null) { if (LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric<Unit>(obj)) { return true; } return false; } return true; } virtual int IComparable.CompareTo(object _obj) { return 0; } } [Serializable] [CompilationMapping(SourceConstructFlags.ObjectType)] public enum SourceConstructFlags { None = 0, SumType = 1, RecordType = 2, ObjectType = 3, Field = 4, Exception = 5, Closure = 6, Module = 7, UnionCase = 8, Value = 9, KindMask = 31, NonPublicRepresentation = 32 } [Serializable] [Flags] [CompilationMapping(SourceConstructFlags.ObjectType)] public enum CompilationRepresentationFlags { None = 0, Static = 1, Instance = 2, ModuleSuffix = 4, UseNullAsTrueValue = 8, Event = 0x10 } [Serializable] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class SealedAttribute : Attribute { internal bool value; public bool Value => value; public SealedAttribute(bool value) { this.value = value; } public SealedAttribute() : this(value: true) { } } [Serializable] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class AbstractClassAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.GenericParameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class EqualityConditionalOnAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.GenericParameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ComparisonConditionalOnAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class AllowNullLiteralAttribute : Attribute { internal bool value; public bool Value => value; public AllowNullLiteralAttribute(bool value) { this.value = value; } public AllowNullLiteralAttribute() : this(value: true) { } } [Serializable] [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class VolatileFieldAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class DefaultAugmentationAttribute : Attribute { internal bool value; public bool Value => value; public DefaultAugmentationAttribute(bool value) { this.value = value; } } [Serializable] [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CLIEventAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CLIMutableAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class AutoSerializableAttribute : Attribute { internal bool value; public bool Value => value; public AutoSerializableAttribute(bool value) { this.value = value; } } [Serializable] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Field, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class DefaultValueAttribute : Attribute { internal bool check; public bool Check => check; public DefaultValueAttribute(bool check) { this.check = check; } public DefaultValueAttribute() : this(check: true) { } } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class EntryPointAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ReferenceEqualityAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class StructuralComparisonAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class StructuralEqualityAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class NoEqualityAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CustomEqualityAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CustomComparisonAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class NoComparisonAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Parameter | AttributeTargets.Delegate, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ReflectedDefinitionAttribute : Attribute { internal bool includeValue; public bool IncludeValue => includeValue; public ReflectedDefinitionAttribute(bool includeValue) { this.includeValue = includeValue; } public ReflectedDefinitionAttribute() : this(includeValue: false) { } } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompiledNameAttribute : Attribute { internal string compiledName; public string CompiledName => compiledName; public CompiledNameAttribute(string compiledName) { this.compiledName = compiledName; } } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.ReturnValue, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class StructAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.GenericParameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class MeasureAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class MeasureAnnotatedAbbreviationAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class InterfaceAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ClassAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class LiteralAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class FSharpInterfaceDataVersionAttribute : Attribute { internal int release; internal int minor; internal int major; public int Major => major; public int Minor => minor; public int Release => release; public FSharpInterfaceDataVersionAttribute(int major, int minor, int release) { this.major = major; this.minor = minor; this.release = release; } } [Serializable] [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompilationMappingAttribute : Attribute { internal int variantNumber; internal Type[] typeDefinitions; internal SourceConstructFlags sourceConstructFlags; internal int sequenceNumber; internal string resourceName; public SourceConstructFlags SourceConstructFlags => sourceConstructFlags; public int SequenceNumber => sequenceNumber; public int VariantNumber => variantNumber; public Type[] TypeDefinitions => typeDefinitions; public string ResourceName => resourceName; internal CompilationMappingAttribute(SourceConstructFlags sourceConstructFlags, int variantNumber, int sequenceNumber, string resourceName, Type[] typeDefinitions) { this.sourceConstructFlags = sourceConstructFlags; this.variantNumber = variantNumber; this.sequenceNumber = sequenceNumber; this.resourceName = resourceName; this.typeDefinitions = typeDefinitions; } public CompilationMappingAttribute(SourceConstructFlags sourceConstructFlags) : this(sourceConstructFlags, 0, 0) { } public CompilationMappingAttribute(SourceConstructFlags sourceConstructFlags, int sequenceNumber) : this(sourceConstructFlags, 0, sequenceNumber) { } public CompilationMappingAttribute(SourceConstructFlags sourceConstructFlags, int variantNumber, int sequenceNumber) : this(sourceConstructFlags, variantNumber, sequenceNumber, null, null) { } public CompilationMappingAttribute(string resourceName, Type[] typeDefinitions) : this(SourceConstructFlags.None, 0, 0, resourceName, typeDefinitions) { } } [Serializable] [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompilationSourceNameAttribute : Attribute { internal string sourceName; public string SourceName => sourceName; public CompilationSourceNameAttribute(string sourceName) { this.sourceName = sourceName; } } [Serializable] [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompilationRepresentationAttribute : Attribute { internal CompilationRepresentationFlags flags; public CompilationRepresentationFlags Flags => flags; public CompilationRepresentationAttribute(CompilationRepresentationFlags flags) { this.flags = flags; } } [Serializable] [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ExperimentalAttribute : Attribute { internal string message; public string Message => message; public ExperimentalAttribute(string message) { this.message = message; } } [Serializable] [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class InlineIfLambdaAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompilationArgumentCountsAttribute : Attribute { internal int[] counts; public IEnumerable<int> Counts => (IEnumerable<int>)counts.Clone(); public CompilationArgumentCountsAttribute(int[] counts) { this.counts = counts; } } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CustomOperationAttribute : Attribute { internal string name; internal bool isBinary; internal bool allowInto; internal bool isJoin; internal bool isGroupJoin; internal bool maintainsVarSpace; internal bool maintainsVarSpaceWithBind; internal string joinOnWord; public string Name => name; public bool AllowIntoPattern { get { return allowInto; } set { allowInto = value; } } public bool IsLikeZip { get { return isBinary; } set { isBinary = value; } } public bool IsLikeJoin { get { return isJoin; } set { isJoin = value; } } public bool IsLikeGroupJoin { get { return isGroupJoin; } set { isGroupJoin = value; } } public string JoinConditionWord { get { return joinOnWord; } set { joinOnWord = value; } } public bool MaintainsVariableSpace { get { return maintainsVarSpace; } set { maintainsVarSpace = value; } } public bool MaintainsVariableSpaceUsingBind { get { return maintainsVarSpaceWithBind; } set { maintainsVarSpaceWithBind = value; } } public CustomOperationAttribute(string name) { this.name = name; isBinary = false; allowInto = false; isJoin = false; isGroupJoin = false; maintainsVarSpace = false; maintainsVarSpaceWithBind = false; joinOnWord = ""; } public CustomOperationAttribute() : this("") { } } [Serializable] [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class ProjectionParameterAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class StructuredFormatDisplayAttribute : Attribute { internal string value; public string Value => value; public StructuredFormatDisplayAttribute(string value) { this.value = value; } } [Serializable] [AttributeUsage(AttributeTargets.All, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class CompilerMessageAttribute : Attribute { internal int messageNumber; internal string message; internal bool isError; internal bool isHidden; public string Message => message; public int MessageNumber => messageNumber; public bool IsError { get { return isError; } set { isError = value; } } public bool IsHidden { get { return isHidden; } set { isHidden = value; } } public CompilerMessageAttribute(string message, int messageNumber) { this.message = message; this.messageNumber = messageNumber; isError = false; isHidden = false; } } [Serializable] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class UnverifiableAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class NoDynamicInvocationAttribute : Attribute { internal bool isLegacy; internal bool IsLegacy => isLegacy; internal NoDynamicInvocationAttribute(bool isLegacy) { this.isLegacy = isLegacy; } public NoDynamicInvocationAttribute() : this(isLegacy: false) { } } [Serializable] [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class OptionalArgumentAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class GeneralizableValueAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class RequiresExplicitTypeArgumentsAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class RequireQualifiedAccessAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class AutoOpenAttribute : Attribute { internal string path; public string Path => path; public AutoOpenAttribute(string path) { this.path = path; } public AutoOpenAttribute() : this("") { } } [Serializable] [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] internal sealed class ValueAsStaticPropertyAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class NoCompilerInliningAttribute : Attribute { } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class WarnOnWithoutNullArgumentAttribute : Attribute { internal string warningMessage; internal bool Localize@; public string WarningMessage => warningMessage; internal bool Localize { [CompilerGenerated] [DebuggerNonUserCode] get { return Localize@; } [CompilerGenerated] [DebuggerNonUserCode] set { Localize@ = value; } } public WarnOnWithoutNullArgumentAttribute(string warningMessage) { this.warningMessage = warningMessage; Localize@ = false; } } [Serializable] [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] [Sealed] [CompilationMapping(SourceConstructFlags.ObjectType)] public sealed class TailCallAttribute : Attribute { } } namespace System.Diagnostics.CodeAnalysis { [Serializable] [Flags] [RequireQualifiedAccess] [CompilationMapping(SourceConstructFlags.ObjectType)] internal enum DynamicallyAccessedMemberTypes { None = 0, PublicParameterlessConstructor = 1, PublicConstructors = 3, NonPublicConstructors = 4, PublicMethods = 8, NonPublicMethods = 0x10, PublicFields = 0x20, NonPublicFields = 0x40, PublicNestedTypes = 0x80, NonPublicNestedTypes = 0x100, PublicProperties = 0x200, NonPublicProperties = 0x400, PublicEvents = 0x800, NonPublicEvents = 0x1000, Interfaces = 0x2000, All = -1 } [Serializable] [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, Inherited = false)] [CompilationMapping(SourceConstructFlags.ObjectType)] internal class DynamicallyAccessedMembersAttribute : Attribute { internal DynamicallyAccessedMemberTypes MemberTypes@; internal DynamicallyAccessedMemberTypes MemberTypes { [CompilerGenerated] [DebuggerNonUserCode] get { return MemberTypes@; } [CompilerGenerated] [DebuggerNonUserCode] set { MemberTypes@ = value; } } public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes) { MemberTypes@ = memberTypes; } internal void DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTypes memberTypes) { MemberTypes@ = memberTypes; } } } namespace Microsoft.FSharp.Core { [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`2")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2> : IEquatable<FSharpChoice<T1, T2>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of2 = 0; public const int Choice2Of2 = 1; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, >.Choice1Of2@DebugTypeProxy))] public class Choice1Of2 : FSharpChoice<T1, T2> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of2(T1 item) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, >.Choice2Of2@DebugTypeProxy))] public class Choice2Of2 : FSharpChoice<T1, T2> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of2(T2 item) { this.item = item; } } [SpecialName] internal class Choice1Of2@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice1Of2@DebugTypeProxy(Choice1Of2 obj) { _obj = obj; } } [SpecialName] internal class Choice2Of2@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice2Of2@DebugTypeProxy(Choice2Of2 obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [CompilerGenerated] [DebuggerNonUserCode] get { return (this is Choice2Of2) ? 1 : 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice1Of2 { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Choice1Of2; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice2Of2 { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Choice2Of2; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, >))] [CompilerGenerated] [DebuggerNonUserCode] internal FSharpChoice() { } [CompilationMapping(SourceConstructFlags.UnionCase, 0)] public static FSharpChoice<T1, T2> NewChoice1Of2(T1 item) { return new Choice1Of2(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 1)] public static FSharpChoice<T1, T2> NewChoice2Of2(T2 item) { return new Choice2Of2(item); } [CompilerGenerated] public virtual sealed int CompareTo(FSharpChoice<T1, T2> obj) { if (this != null) { if (obj != null) { int num = ((this is Choice2Of2) ? 1 : 0); int num2 = ((obj is Choice2Of2) ? 1 : 0); if (num == num2) { IComparer genericComparer; if (this is Choice1Of2) { Choice1Of2 choice1Of = (Choice1Of2)this; Choice1Of2 choice1Of2 = (Choice1Of2)obj; genericComparer = LanguagePrimitives.GenericComparer; T1 item = choice1Of.item; T1 item2 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item, item2); } Choice2Of2 choice2Of = (Choice2Of2)this; Choice2Of2 choice2Of2 = (Choice2Of2)obj; genericComparer = LanguagePrimitives.GenericComparer; T2 item3 = choice2Of.item; T2 item4 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item3, item4); } return num - num2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((FSharpChoice<T1, T2>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { FSharpChoice<T1, T2> fSharpChoice = (FSharpChoice<T1, T2>)obj; if (this != null) { if ((FSharpChoice<T1, T2>)obj != null) { int num = ((this is Choice2Of2) ? 1 : 0); FSharpChoice<T1, T2> fSharpChoice2 = fSharpChoice; int num2 = ((fSharpChoice2 is Choice2Of2) ? 1 : 0); if (num == num2) { if (this is Choice1Of2) { Choice1Of2 choice1Of = (Choice1Of2)this; Choice1Of2 choice1Of2 = (Choice1Of2)fSharpChoice; T1 item = choice1Of.item; T1 item2 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item, item2); } Choice2Of2 choice2Of = (Choice2Of2)this; Choice2Of2 choice2Of2 = (Choice2Of2)fSharpChoice; T2 item3 = choice2Of.item; T2 item4 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item3, item4); } return num - num2; } return 1; } if ((FSharpChoice<T1, T2>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; if (this is Choice1Of2) { Choice1Of2 choice1Of = (Choice1Of2)this; num = 0; T1 item = choice1Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item) + ((num << 6) + (num >> 2))); } Choice2Of2 choice2Of = (Choice2Of2)this; num = 1; T2 item2 = choice2Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item2) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(FSharpChoice<T1, T2> obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { int num = ((this is Choice2Of2) ? 1 : 0); int num2 = ((obj is Choice2Of2) ? 1 : 0); if (num == num2) { if (this is Choice1Of2) { Choice1Of2 choice1Of = (Choice1Of2)this; Choice1Of2 choice1Of2 = (Choice1Of2)obj; T1 item = choice1Of.item; T1 item2 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item, item2); } Choice2Of2 choice2Of = (Choice2Of2)this; Choice2Of2 choice2Of2 = (Choice2Of2)obj; T2 item3 = choice2Of.item; T2 item4 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item3, item4); } return false; } return false; } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is FSharpChoice<T1, T2> obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public virtual sealed bool Equals(FSharpChoice<T1, T2> obj) { if (this != null) { if (obj != null) { int num = ((this is Choice2Of2) ? 1 : 0); int num2 = ((obj is Choice2Of2) ? 1 : 0); if (num == num2) { if (this is Choice1Of2) { Choice1Of2 choice1Of = (Choice1Of2)this; Choice1Of2 choice1Of2 = (Choice1Of2)obj; T1 item = choice1Of.item; T1 item2 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item, item2); } Choice2Of2 choice2Of = (Choice2Of2)this; Choice2Of2 choice2Of2 = (Choice2Of2)obj; T2 item3 = choice2Of.item; T2 item4 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item3, item4); } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is FSharpChoice<T1, T2> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`3")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2, T3> : IEquatable<FSharpChoice<T1, T2, T3>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2, T3>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of3 = 0; public const int Choice2Of3 = 1; public const int Choice3Of3 = 2; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , >.Choice1Of3@DebugTypeProxy))] public class Choice1Of3 : FSharpChoice<T1, T2, T3> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of3(T1 item) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , >.Choice2Of3@DebugTypeProxy))] public class Choice2Of3 : FSharpChoice<T1, T2, T3> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of3(T2 item) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , >.Choice3Of3@DebugTypeProxy))] public class Choice3Of3 : FSharpChoice<T1, T2, T3> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T3 item; [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice3Of3(T3 item) { this.item = item; } } [SpecialName] internal class Choice1Of3@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice1Of3@DebugTypeProxy(Choice1Of3 obj) { _obj = obj; } } [SpecialName] internal class Choice2Of3@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice2Of3@DebugTypeProxy(Choice2Of3 obj) { _obj = obj; } } [SpecialName] internal class Choice3Of3@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice3Of3@DebugTypeProxy(Choice3Of3 obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [CompilerGenerated] [DebuggerNonUserCode] get { return (this is Choice3Of3) ? 2 : ((this is Choice2Of3) ? 1 : 0); } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice1Of3 { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Choice1Of3; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice2Of3 { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Choice2Of3; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice3Of3 { [CompilerGenerated] [DebuggerNonUserCode] get { return this is Choice3Of3; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , >))] [CompilerGenerated] [DebuggerNonUserCode] internal FSharpChoice() { } [CompilationMapping(SourceConstructFlags.UnionCase, 0)] public static FSharpChoice<T1, T2, T3> NewChoice1Of3(T1 item) { return new Choice1Of3(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 1)] public static FSharpChoice<T1, T2, T3> NewChoice2Of3(T2 item) { return new Choice2Of3(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 2)] public static FSharpChoice<T1, T2, T3> NewChoice3Of3(T3 item) { return new Choice3Of3(item); } [CompilerGenerated] public virtual sealed int CompareTo(FSharpChoice<T1, T2, T3> obj) { if (this != null) { if (obj != null) { int num = ((this is Choice3Of3) ? 2 : ((this is Choice2Of3) ? 1 : 0)); int num2 = ((obj is Choice3Of3) ? 2 : ((obj is Choice2Of3) ? 1 : 0)); if (num == num2) { IComparer genericComparer; if (!(this is Choice1Of3)) { if (this is Choice2Of3) { Choice2Of3 choice2Of = (Choice2Of3)this; Choice2Of3 choice2Of2 = (Choice2Of3)obj; genericComparer = LanguagePrimitives.GenericComparer; T2 item = choice2Of.item; T2 item2 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item, item2); } if (this is Choice3Of3) { Choice3Of3 choice3Of = (Choice3Of3)this; Choice3Of3 choice3Of2 = (Choice3Of3)obj; genericComparer = LanguagePrimitives.GenericComparer; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item3, item4); } } Choice1Of3 choice1Of = (Choice1Of3)this; Choice1Of3 choice1Of2 = (Choice1Of3)obj; genericComparer = LanguagePrimitives.GenericComparer; T1 item5 = choice1Of.item; T1 item6 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item5, item6); } return num - num2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((FSharpChoice<T1, T2, T3>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { FSharpChoice<T1, T2, T3> fSharpChoice = (FSharpChoice<T1, T2, T3>)obj; if (this != null) { if ((FSharpChoice<T1, T2, T3>)obj != null) { int num = ((this is Choice3Of3) ? 2 : ((this is Choice2Of3) ? 1 : 0)); FSharpChoice<T1, T2, T3> fSharpChoice2 = fSharpChoice; int num2 = ((fSharpChoice2 is Choice3Of3) ? 2 : ((fSharpChoice2 is Choice2Of3) ? 1 : 0)); if (num == num2) { if (!(this is Choice1Of3)) { if (this is Choice2Of3) { Choice2Of3 choice2Of = (Choice2Of3)this; Choice2Of3 choice2Of2 = (Choice2Of3)fSharpChoice; T2 item = choice2Of.item; T2 item2 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item, item2); } if (this is Choice3Of3) { Choice3Of3 choice3Of = (Choice3Of3)this; Choice3Of3 choice3Of2 = (Choice3Of3)fSharpChoice; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item3, item4); } } Choice1Of3 choice1Of = (Choice1Of3)this; Choice1Of3 choice1Of2 = (Choice1Of3)fSharpChoice; T1 item5 = choice1Of.item; T1 item6 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item5, item6); } return num - num2; } return 1; } if ((FSharpChoice<T1, T2, T3>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; if (!(this is Choice1Of3)) { if (this is Choice2Of3) { Choice2Of3 choice2Of = (Choice2Of3)this; num = 1; T2 item = choice2Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item) + ((num << 6) + (num >> 2))); } if (this is Choice3Of3) { Choice3Of3 choice3Of = (Choice3Of3)this; num = 2; T3 item2 = choice3Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item2) + ((num << 6) + (num >> 2))); } } Choice1Of3 choice1Of = (Choice1Of3)this; num = 0; T1 item3 = choice1Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item3) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(FSharpChoice<T1, T2, T3> obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { int num = ((this is Choice3Of3) ? 2 : ((this is Choice2Of3) ? 1 : 0)); int num2 = ((obj is Choice3Of3) ? 2 : ((obj is Choice2Of3) ? 1 : 0)); if (num == num2) { if (!(this is Choice1Of3)) { if (this is Choice2Of3) { Choice2Of3 choice2Of = (Choice2Of3)this; Choice2Of3 choice2Of2 = (Choice2Of3)obj; T2 item = choice2Of.item; T2 item2 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item, item2); } if (this is Choice3Of3) { Choice3Of3 choice3Of = (Choice3Of3)this; Choice3Of3 choice3Of2 = (Choice3Of3)obj; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item3, item4); } } Choice1Of3 choice1Of = (Choice1Of3)this; Choice1Of3 choice1Of2 = (Choice1Of3)obj; T1 item5 = choice1Of.item; T1 item6 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item5, item6); } return false; } return false; } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is FSharpChoice<T1, T2, T3> obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public virtual sealed bool Equals(FSharpChoice<T1, T2, T3> obj) { if (this != null) { if (obj != null) { int num = ((this is Choice3Of3) ? 2 : ((this is Choice2Of3) ? 1 : 0)); int num2 = ((obj is Choice3Of3) ? 2 : ((obj is Choice2Of3) ? 1 : 0)); if (num == num2) { if (!(this is Choice1Of3)) { if (this is Choice2Of3) { Choice2Of3 choice2Of = (Choice2Of3)this; Choice2Of3 choice2Of2 = (Choice2Of3)obj; T2 item = choice2Of.item; T2 item2 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item, item2); } if (this is Choice3Of3) { Choice3Of3 choice3Of = (Choice3Of3)this; Choice3Of3 choice3Of2 = (Choice3Of3)obj; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item3, item4); } } Choice1Of3 choice1Of = (Choice1Of3)this; Choice1Of3 choice1Of2 = (Choice1Of3)obj; T1 item5 = choice1Of.item; T1 item6 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item5, item6); } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is FSharpChoice<T1, T2, T3> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`4")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2, T3, T4> : IEquatable<FSharpChoice<T1, T2, T3, T4>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2, T3, T4>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of4 = 0; public const int Choice2Of4 = 1; public const int Choice3Of4 = 2; public const int Choice4Of4 = 3; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , >.Choice1Of4@DebugTypeProxy))] public class Choice1Of4 : FSharpChoice<T1, T2, T3, T4> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of4(T1 item) : base(0) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , >.Choice2Of4@DebugTypeProxy))] public class Choice2Of4 : FSharpChoice<T1, T2, T3, T4> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of4(T2 item) : base(1) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , >.Choice3Of4@DebugTypeProxy))] public class Choice3Of4 : FSharpChoice<T1, T2, T3, T4> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T3 item; [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice3Of4(T3 item) : base(2) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , >.Choice4Of4@DebugTypeProxy))] public class Choice4Of4 : FSharpChoice<T1, T2, T3, T4> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T4 item; [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice4Of4(T4 item) : base(3) { this.item = item; } } [SpecialName] internal class Choice1Of4@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice1Of4@DebugTypeProxy(Choice1Of4 obj) { _obj = obj; } } [SpecialName] internal class Choice2Of4@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice2Of4@DebugTypeProxy(Choice2Of4 obj) { _obj = obj; } } [SpecialName] internal class Choice3Of4@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice3Of4@DebugTypeProxy(Choice3Of4 obj) { _obj = obj; } } [SpecialName] internal class Choice4Of4@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice4Of4@DebugTypeProxy(Choice4Of4 obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice1Of4 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice2Of4 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice3Of4 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 2; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice4Of4 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 3; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal FSharpChoice(int _tag) { this._tag = _tag; } [CompilationMapping(SourceConstructFlags.UnionCase, 0)] public static FSharpChoice<T1, T2, T3, T4> NewChoice1Of4(T1 item) { return new Choice1Of4(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 1)] public static FSharpChoice<T1, T2, T3, T4> NewChoice2Of4(T2 item) { return new Choice2Of4(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 2)] public static FSharpChoice<T1, T2, T3, T4> NewChoice3Of4(T3 item) { return new Choice3Of4(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 3)] public static FSharpChoice<T1, T2, T3, T4> NewChoice4Of4(T4 item) { return new Choice4Of4(item); } [CompilerGenerated] public virtual sealed int CompareTo(FSharpChoice<T1, T2, T3, T4> obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { switch (Tag) { default: { Choice1Of4 choice1Of = (Choice1Of4)this; Choice1Of4 choice1Of2 = (Choice1Of4)obj; IComparer genericComparer = LanguagePrimitives.GenericComparer; T1 item7 = choice1Of.item; T1 item8 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item7, item8); } case 1: { Choice2Of4 choice2Of = (Choice2Of4)this; Choice2Of4 choice2Of2 = (Choice2Of4)obj; IComparer genericComparer = LanguagePrimitives.GenericComparer; T2 item5 = choice2Of.item; T2 item6 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item5, item6); } case 2: { Choice3Of4 choice3Of = (Choice3Of4)this; Choice3Of4 choice3Of2 = (Choice3Of4)obj; IComparer genericComparer = LanguagePrimitives.GenericComparer; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item3, item4); } case 3: { Choice4Of4 choice4Of = (Choice4Of4)this; Choice4Of4 choice4Of2 = (Choice4Of4)obj; IComparer genericComparer = LanguagePrimitives.GenericComparer; T4 item = choice4Of.item; T4 item2 = choice4Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, item, item2); } } } return tag - tag2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((FSharpChoice<T1, T2, T3, T4>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { FSharpChoice<T1, T2, T3, T4> fSharpChoice = (FSharpChoice<T1, T2, T3, T4>)obj; if (this != null) { if ((FSharpChoice<T1, T2, T3, T4>)obj != null) { int tag = _tag; int tag2 = fSharpChoice._tag; if (tag == tag2) { switch (Tag) { default: { Choice1Of4 choice1Of = (Choice1Of4)this; Choice1Of4 choice1Of2 = (Choice1Of4)fSharpChoice; T1 item7 = choice1Of.item; T1 item8 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item7, item8); } case 1: { Choice2Of4 choice2Of = (Choice2Of4)this; Choice2Of4 choice2Of2 = (Choice2Of4)fSharpChoice; T2 item5 = choice2Of.item; T2 item6 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item5, item6); } case 2: { Choice3Of4 choice3Of = (Choice3Of4)this; Choice3Of4 choice3Of2 = (Choice3Of4)fSharpChoice; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item3, item4); } case 3: { Choice4Of4 choice4Of = (Choice4Of4)this; Choice4Of4 choice4Of2 = (Choice4Of4)fSharpChoice; T4 item = choice4Of.item; T4 item2 = choice4Of2.item; return LanguagePrimitives.HashCompare.GenericComparisonWithComparerIntrinsic(comp, item, item2); } } } return tag - tag2; } return 1; } if ((FSharpChoice<T1, T2, T3, T4>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; switch (Tag) { default: { Choice1Of4 choice1Of = (Choice1Of4)this; num = 0; T1 item4 = choice1Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item4) + ((num << 6) + (num >> 2))); } case 1: { Choice2Of4 choice2Of = (Choice2Of4)this; num = 1; T2 item3 = choice2Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item3) + ((num << 6) + (num >> 2))); } case 2: { Choice3Of4 choice3Of = (Choice3Of4)this; num = 2; T3 item2 = choice3Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item2) + ((num << 6) + (num >> 2))); } case 3: { Choice4Of4 choice4Of = (Choice4Of4)this; num = 3; T4 item = choice4Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item) + ((num << 6) + (num >> 2))); } } } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(FSharpChoice<T1, T2, T3, T4> obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { switch (Tag) { default: { Choice1Of4 choice1Of = (Choice1Of4)this; Choice1Of4 choice1Of2 = (Choice1Of4)obj; T1 item7 = choice1Of.item; T1 item8 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item7, item8); } case 1: { Choice2Of4 choice2Of = (Choice2Of4)this; Choice2Of4 choice2Of2 = (Choice2Of4)obj; T2 item5 = choice2Of.item; T2 item6 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item5, item6); } case 2: { Choice3Of4 choice3Of = (Choice3Of4)this; Choice3Of4 choice3Of2 = (Choice3Of4)obj; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item3, item4); } case 3: { Choice4Of4 choice4Of = (Choice4Of4)this; Choice4Of4 choice4Of2 = (Choice4Of4)obj; T4 item = choice4Of.item; T4 item2 = choice4Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityWithComparerIntrinsic(comp, item, item2); } } } return false; } return false; } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is FSharpChoice<T1, T2, T3, T4> obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public virtual sealed bool Equals(FSharpChoice<T1, T2, T3, T4> obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { switch (Tag) { default: { Choice1Of4 choice1Of = (Choice1Of4)this; Choice1Of4 choice1Of2 = (Choice1Of4)obj; T1 item7 = choice1Of.item; T1 item8 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item7, item8); } case 1: { Choice2Of4 choice2Of = (Choice2Of4)this; Choice2Of4 choice2Of2 = (Choice2Of4)obj; T2 item5 = choice2Of.item; T2 item6 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item5, item6); } case 2: { Choice3Of4 choice3Of = (Choice3Of4)this; Choice3Of4 choice3Of2 = (Choice3Of4)obj; T3 item3 = choice3Of.item; T3 item4 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item3, item4); } case 3: { Choice4Of4 choice4Of = (Choice4Of4)this; Choice4Of4 choice4Of2 = (Choice4Of4)obj; T4 item = choice4Of.item; T4 item2 = choice4Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item, item2); } } } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is FSharpChoice<T1, T2, T3, T4> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`5")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2, T3, T4, T5> : IEquatable<FSharpChoice<T1, T2, T3, T4, T5>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2, T3, T4, T5>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of5 = 0; public const int Choice2Of5 = 1; public const int Choice3Of5 = 2; public const int Choice4Of5 = 3; public const int Choice5Of5 = 4; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , >.Choice1Of5@DebugTypeProxy))] public class Choice1Of5 : FSharpChoice<T1, T2, T3, T4, T5> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of5(T1 item) : base(0) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , >.Choice2Of5@DebugTypeProxy))] public class Choice2Of5 : FSharpChoice<T1, T2, T3, T4, T5> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of5(T2 item) : base(1) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , >.Choice3Of5@DebugTypeProxy))] public class Choice3Of5 : FSharpChoice<T1, T2, T3, T4, T5> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T3 item; [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice3Of5(T3 item) : base(2) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , >.Choice4Of5@DebugTypeProxy))] public class Choice4Of5 : FSharpChoice<T1, T2, T3, T4, T5> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T4 item; [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice4Of5(T4 item) : base(3) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , >.Choice5Of5@DebugTypeProxy))] public class Choice5Of5 : FSharpChoice<T1, T2, T3, T4, T5> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T5 item; [CompilationMapping(SourceConstructFlags.Field, 4, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T5 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice5Of5(T5 item) : base(4) { this.item = item; } } [SpecialName] internal class Choice1Of5@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice1Of5@DebugTypeProxy(Choice1Of5 obj) { _obj = obj; } } [SpecialName] internal class Choice2Of5@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice2Of5@DebugTypeProxy(Choice2Of5 obj) { _obj = obj; } } [SpecialName] internal class Choice3Of5@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice3Of5@DebugTypeProxy(Choice3Of5 obj) { _obj = obj; } } [SpecialName] internal class Choice4Of5@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice4Of5@DebugTypeProxy(Choice4Of5 obj) { _obj = obj; } } [SpecialName] internal class Choice5Of5@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 4, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T5 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice5Of5@DebugTypeProxy(Choice5Of5 obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice1Of5 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice2Of5 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice3Of5 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 2; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice4Of5 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 3; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice5Of5 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 4; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal FSharpChoice(int _tag) { this._tag = _tag; } [CompilationMapping(SourceConstructFlags.UnionCase, 0)] public static FSharpChoice<T1, T2, T3, T4, T5> NewChoice1Of5(T1 item) { return new Choice1Of5(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 1)] public static FSharpChoice<T1, T2, T3, T4, T5> NewChoice2Of5(T2 item) { return new Choice2Of5(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 2)] public static FSharpChoice<T1, T2, T3, T4, T5> NewChoice3Of5(T3 item) { return new Choice3Of5(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 3)] public static FSharpChoice<T1, T2, T3, T4, T5> NewChoice4Of5(T4 item) { return new Choice4Of5(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 4)] public static FSharpChoice<T1, T2, T3, T4, T5> NewChoice5Of5(T5 item) { return new Choice5Of5(item); } [CompilerGenerated] public virtual sealed int CompareTo(FSharpChoice<T1, T2, T3, T4, T5> obj) { if (this != null) { if (obj != null) { return $Prim-types.CompareTo$cont@3723(this, obj, null); } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((FSharpChoice<T1, T2, T3, T4, T5>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { FSharpChoice<T1, T2, T3, T4, T5> objTemp = (FSharpChoice<T1, T2, T3, T4, T5>)obj; if (this != null) { return $Prim-types.CompareTo$cont@3723-1(comp, this, obj, objTemp, null); } if ((FSharpChoice<T1, T2, T3, T4, T5>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; switch (Tag) { default: { Choice1Of5 choice1Of = (Choice1Of5)this; num = 0; T1 item5 = choice1Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item5) + ((num << 6) + (num >> 2))); } case 1: { Choice2Of5 choice2Of = (Choice2Of5)this; num = 1; T2 item4 = choice2Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item4) + ((num << 6) + (num >> 2))); } case 2: { Choice3Of5 choice3Of = (Choice3Of5)this; num = 2; T3 item3 = choice3Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item3) + ((num << 6) + (num >> 2))); } case 3: { Choice4Of5 choice4Of = (Choice4Of5)this; num = 3; T4 item2 = choice4Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item2) + ((num << 6) + (num >> 2))); } case 4: { Choice5Of5 choice5Of = (Choice5Of5)this; num = 4; T5 item = choice5Of.item; return -1640531527 + (LanguagePrimitives.HashCompare.GenericHashWithComparerIntrinsic(comp, item) + ((num << 6) + (num >> 2))); } } } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(FSharpChoice<T1, T2, T3, T4, T5> obj, IEqualityComparer comp) { if (this != null) { return $Prim-types.Equals$cont@3723(this, obj, comp, null); } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is FSharpChoice<T1, T2, T3, T4, T5> obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public virtual sealed bool Equals(FSharpChoice<T1, T2, T3, T4, T5> obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { switch (Tag) { default: { Choice1Of5 choice1Of = (Choice1Of5)this; Choice1Of5 choice1Of2 = (Choice1Of5)obj; T1 item9 = choice1Of.item; T1 item10 = choice1Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item9, item10); } case 1: { Choice2Of5 choice2Of = (Choice2Of5)this; Choice2Of5 choice2Of2 = (Choice2Of5)obj; T2 item7 = choice2Of.item; T2 item8 = choice2Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item7, item8); } case 2: { Choice3Of5 choice3Of = (Choice3Of5)this; Choice3Of5 choice3Of2 = (Choice3Of5)obj; T3 item5 = choice3Of.item; T3 item6 = choice3Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item5, item6); } case 3: { Choice4Of5 choice4Of = (Choice4Of5)this; Choice4Of5 choice4Of2 = (Choice4Of5)obj; T4 item3 = choice4Of.item; T4 item4 = choice4Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item3, item4); } case 4: { Choice5Of5 choice5Of = (Choice5Of5)this; Choice5Of5 choice5Of2 = (Choice5Of5)obj; T5 item = choice5Of.item; T5 item2 = choice5Of2.item; return LanguagePrimitives.HashCompare.GenericEqualityERIntrinsic(item, item2); } } } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is FSharpChoice<T1, T2, T3, T4, T5> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`6")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2, T3, T4, T5, T6> : IEquatable<FSharpChoice<T1, T2, T3, T4, T5, T6>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2, T3, T4, T5, T6>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of6 = 0; public const int Choice2Of6 = 1; public const int Choice3Of6 = 2; public const int Choice4Of6 = 3; public const int Choice5Of6 = 4; public const int Choice6Of6 = 5; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice1Of6@DebugTypeProxy))] public class Choice1Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of6(T1 item) : base(0) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice2Of6@DebugTypeProxy))] public class Choice2Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of6(T2 item) : base(1) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice3Of6@DebugTypeProxy))] public class Choice3Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T3 item; [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice3Of6(T3 item) : base(2) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice4Of6@DebugTypeProxy))] public class Choice4Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T4 item; [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice4Of6(T4 item) : base(3) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice5Of6@DebugTypeProxy))] public class Choice5Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T5 item; [CompilationMapping(SourceConstructFlags.Field, 4, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T5 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice5Of6(T5 item) : base(4) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , >.Choice6Of6@DebugTypeProxy))] public class Choice6Of6 : FSharpChoice<T1, T2, T3, T4, T5, T6> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T6 item; [CompilationMapping(SourceConstructFlags.Field, 5, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T6 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice6Of6(T6 item) : base(5) { this.item = item; } } [SpecialName] internal class Choice1Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice1Of6@DebugTypeProxy(Choice1Of6 obj) { _obj = obj; } } [SpecialName] internal class Choice2Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice2Of6@DebugTypeProxy(Choice2Of6 obj) { _obj = obj; } } [SpecialName] internal class Choice3Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice3Of6@DebugTypeProxy(Choice3Of6 obj) { _obj = obj; } } [SpecialName] internal class Choice4Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 3, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T4 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice4Of6@DebugTypeProxy(Choice4Of6 obj) { _obj = obj; } } [SpecialName] internal class Choice5Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 4, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T5 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice5Of6@DebugTypeProxy(Choice5Of6 obj) { _obj = obj; } } [SpecialName] internal class Choice6Of6@DebugTypeProxy { [CompilationMapping(SourceConstructFlags.Field, 5, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T6 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return _obj.item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] public Choice6Of6@DebugTypeProxy(Choice6Of6 obj) { _obj = obj; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice1Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice2Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice3Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 2; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice4Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 3; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice5Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 4; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsChoice6Of6 { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 5; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal FSharpChoice(int _tag) { this._tag = _tag; } [CompilationMapping(SourceConstructFlags.UnionCase, 0)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice1Of6(T1 item) { return new Choice1Of6(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 1)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice2Of6(T2 item) { return new Choice2Of6(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 2)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice3Of6(T3 item) { return new Choice3Of6(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 3)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice4Of6(T4 item) { return new Choice4Of6(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 4)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice5Of6(T5 item) { return new Choice5Of6(item); } [CompilationMapping(SourceConstructFlags.UnionCase, 5)] public static FSharpChoice<T1, T2, T3, T4, T5, T6> NewChoice6Of6(T6 item) { return new Choice6Of6(item); } [CompilerGenerated] public virtual sealed int CompareTo(FSharpChoice<T1, T2, T3, T4, T5, T6> obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { return $Prim-types.CompareTo$cont@3732-2(this, obj, null); } return tag - tag2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int CompareTo(object obj) { return CompareTo((FSharpChoice<T1, T2, T3, T4, T5, T6>)obj); } [CompilerGenerated] public virtual sealed int CompareTo(object obj, IComparer comp) { FSharpChoice<T1, T2, T3, T4, T5, T6> objTemp = (FSharpChoice<T1, T2, T3, T4, T5, T6>)obj; if (this != null) { if ((FSharpChoice<T1, T2, T3, T4, T5, T6>)obj != null) { return $Prim-types.CompareTo$cont@3732-3(comp, this, objTemp, null); } return 1; } if ((FSharpChoice<T1, T2, T3, T4, T5, T6>)obj != null) { return -1; } return 0; } [CompilerGenerated] public virtual sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { return $Prim-types.GetHashCode$cont@3732(comp, this, null); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(FSharpChoice<T1, T2, T3, T4, T5, T6> obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { return $Prim-types.Equals$cont@3732-1(this, obj, comp, null); } return false; } return obj == null; } [CompilerGenerated] public virtual sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is FSharpChoice<T1, T2, T3, T4, T5, T6> obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public virtual sealed bool Equals(FSharpChoice<T1, T2, T3, T4, T5, T6> obj) { if (this != null) { if (obj != null) { return $Prim-types.Equals$cont@3732-2(this, obj, null); } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is FSharpChoice<T1, T2, T3, T4, T5, T6> obj2) { return Equals(obj2); } return false; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [StructuralEquality] [StructuralComparison] [CompiledName("FSharpChoice`7")] [CompilationMapping(SourceConstructFlags.SumType)] public abstract class FSharpChoice<T1, T2, T3, T4, T5, T6, T7> : IEquatable<FSharpChoice<T1, T2, T3, T4, T5, T6, T7>>, IStructuralEquatable, IComparable<FSharpChoice<T1, T2, T3, T4, T5, T6, T7>>, IComparable, IStructuralComparable { public static class Tags { public const int Choice1Of7 = 0; public const int Choice2Of7 = 1; public const int Choice3Of7 = 2; public const int Choice4Of7 = 3; public const int Choice5Of7 = 4; public const int Choice6Of7 = 5; public const int Choice7Of7 = 6; } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , , >.Choice1Of7@DebugTypeProxy))] public class Choice1Of7 : FSharpChoice<T1, T2, T3, T4, T5, T6, T7> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T1 item; [CompilationMapping(SourceConstructFlags.Field, 0, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T1 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice1Of7(T1 item) : base(0) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , , >.Choice2Of7@DebugTypeProxy))] public class Choice2Of7 : FSharpChoice<T1, T2, T3, T4, T5, T6, T7> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T2 item; [CompilationMapping(SourceConstructFlags.Field, 1, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T2 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(FSharpChoice<, , , , , , >))] [CompilerGenerated] [DebuggerNonUserCode] internal Choice2Of7(T2 item) : base(1) { this.item = item; } } [Serializable] [SpecialName] [DebuggerTypeProxy(typeof(FSharpChoice<, , , , , , >.Choice3Of7@DebugTypeProxy))] public class Choice3Of7 : FSharpChoice<T1, T2, T3, T4, T5, T6, T7> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal readonly T3 item; [CompilationMapping(SourceConstructFlags.Field, 2, 0)] [CompilerGenerated] [DebuggerNonUserCode] public T3 Item { [CompilerGenerated] [DebuggerNonUserCode] get { return item; } } [DynamicDependency(DynamicallyAccessedMemberT